Hi I have a RadGrid that is inside of a UserControl, and is used inside of an aspx page that contains a RadPanelBar. When the user clicks the RadPanlBar buttons the gird is displayed. I have to use a filter on my grid, but I only want the filter to display if a certain RadPanelBar button is clicked. I have the following code in my RadPanlBar ItemClick event.
protected void CategoriesPanelBar_ItemClick(object sender, RadPanelBarEventArgs e)
{
e.Item.Selected = true;
if (e.Item.Expanded || e.Item.Items.Count == 0)
{
// This is a leaf we select the parent and this child only
if (e.Item.Items.Count == 0)
{
createDiscountGridControl.SelectedParentCategory = ((RadPanelItem)e.Item.Parent).Value;
createDiscountGridControl.SelectedCategory = e.Item.Value;
}
else
{
createDiscountGridControl.SelectedParentCategory = e.Item.Value;
createDiscountGridControl.SelectedCategory = null;
}
createDiscountGridControl.Rebind();
//createFilter(int.Parse(e.Item.Value));
if (e.Item.Value == "319")
{
Controls.DiscountGrid userControl = createDiscountGridControl;
var rg = ((RadGrid)userControl.FindControl("RadGridDiscounts"));
GridColumn column = rg.MasterTableView.GetColumnSafe("ProductName");
column.CurrentFilterFunction = GridKnownFunction.Contains;
column.CurrentFilterValue = "Product_Name";
rg.AllowFilteringByColumn = true;
rg.MasterTableView.Rebind();
}
}
}
This line is the button that when clicked should show the grid.
if (e.Item.Value == "319")
I'm getting a null reference exception on the line
GridColumn column = rg.MasterTableView.GetColumnSafe("ProductName");
column is coming back null. It's like it can't find the column inside of the Grid. Here is the code for my RadGrid UserControl. The column in question has a unique name of ProductName.
<telerik:RadGrid ID="RadGridDiscounts" runat="server" ShowStatusBar="true"
AllowFilteringByColumn="true" AllowMultiRowSelection="false" AutoGenerateColumns="false"
OnNeedDataSource="RadGridDiscounts_NeedDataSource" OnPreRender="RadGridDiscounts_PreRender"
OnItemDataBound="RadGridDiscounts_ItemDataBound" Skin="Web20" ClientSettings-AllowExpandCollapse="true" OnInit="RadGridDiscounts_Init" OnDetailTableDataBind="RadGridDiscounts_DetailTableDataBind" OnItemCreated="RadGridDiscounts_ItemCreated">
<PagerStyle Mode="NumericPages" />
<MasterTableView DataKeyNames="Category_ID" AllowMultiColumnSorting="true" HierarchyLoadMode="Client" DataMember="Categories">
<DetailTables>
<telerik:GridTableView DataKeyNames="Product_ID" Name="Products" HierarchyLoadMode="Client" DataMember="Products">
<ColumnGroups>
<telerik:GridColumnGroup HeaderText="Parent" Name="Parent" HeaderStyle-HorizontalAlign="Center"></telerik:GridColumnGroup>
<telerik:GridColumnGroup HeaderText="Account" Name="Discount" HeaderStyle-HorizontalAlign="Center"></telerik:GridColumnGroup>
<telerik:GridColumnGroup HeaderText="Margin" Name="Margin" HeaderStyle-HorizontalAlign="Center"></telerik:GridColumnGroup>
</ColumnGroups>
<ParentTableRelation>
<telerik:GridRelationFields DetailKeyField="Category_ID" MasterKeyField="Category_ID" />
</ParentTableRelation>
<%--Detail Table For Second Spiff--%>
<DetailTables>
<telerik:GridTableView HierarchyLoadMode="Client" Name="SecondSpiffs" DataMember="SecondSpiffs" runat="server" >
<ParentTableRelation>
<telerik:GridRelationFields DetailKeyField="SpiffProductID" MasterKeyField="Product_ID"></telerik:GridRelationFields>
</ParentTableRelation>
<Columns>
<telerik:GridBoundColumn UniqueName="SpiffSplitProductID" HeaderText="Spiff Product ID" DataField="SpiffSplitProductID"></telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Spiff Product Name" DataField="SpiffProductName" UniqueName="Attribute" AllowFiltering="true">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Lock Discount" UniqueName="LockDiscount" AllowFiltering="false">
<ItemTemplate>
<asp:CheckBox ID="chkLockDiscount" runat="server" Checked='<%# Eval("Lock_Discount") %>'/>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Approved To Sell" AllowFiltering="false">
<ItemTemplate>
<asp:CheckBox ID="chkStatus" runat="server" Checked='<%# Eval("ApprovedToSell_Flg") %>'/>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Parent Spiff" AllowFiltering="false">
<ItemTemplate>
<asp:Label ID="ParentSpiff" runat="server" Text='<%# Eval("ParentSpiffAmount") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Discount" AllowFiltering="false">
<ItemTemplate>
<asp:TextBox ID="ChildSpiff" runat="server" Columns="7" Text='<%# Eval("ChildSpiffAmount") %>' ></asp:TextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn Display="false">
<ItemTemplate>
<asp:Label id="SpiffOrder" runat="server" Text='<%# Eval("Order") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn UniqueName="SpiffSplitMappingID" Display="false" DataField="SpiffSplitMappingID" />
<telerik:GridBoundColumn UniqueName="SpiffProductID" Display="false" DataField="SpiffProductID" />
<telerik:GridBoundColumn UniqueName="SpiffSplitID" Display="false" DataField="SpiffSplitID" />
<telerik:GridCheckBoxColumn DataField="Lock_Discount" UniqueName="hfDiscountLock" Display="false" />
</Columns>
</telerik:GridTableView>
</DetailTables>
<Columns>
<telerik:GridBoundColumn SortExpression="Product_ID" HeaderText="Product ID" DataField="Product_ID" AllowFiltering="false" />
<%--<telerik:GridBoundColumn SortExpression="Product_Name" HeaderText="Product Name" DataField="Product_Name" UniqueName="ProductName" AllowFiltering="true" CurrentFilterFunction="Contains" ShowFilterIcon="true" AutoPostBackOnFilter="true">
</telerik:GridBoundColumn>--%>
<telerik:GridBoundColumn SortExpression="Product_Name" HeaderText="Product Name" DataField="Product_Name" UniqueName="ProductName">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Approved To Sell" AllowFiltering="false">
<ItemTemplate>
<asp:CheckBox ID="chkApprovedToSell" runat="server" Checked='<%# CheckApprovedToSellFlag(Container.DataItem) %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Lock Discount" UniqueName="LockDiscount" AllowFiltering="false">
<ItemTemplate>
<asp:CheckBox ID="chkLockDiscount" runat="server" Checked='<%# Eval("Lock_Discount") %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Discount" ColumnGroupName="Parent" ItemStyle-Width="120px" AllowFiltering="false">
<ItemTemplate>
<asp:Label ID="txtParentDiscount" runat="server" Text='<%# DiscountFormat(Container.DataItem, "parent") %>'>
</asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Price" ColumnGroupName="Parent" ItemStyle-Width="120px" AllowFiltering="false">
<ItemTemplate>
<asp:Label ID="txtParentPrice" runat="server" Text='<%# FinalPriceFormat(Container.DataItem, "parent") %>'>
</asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Discount" ColumnGroupName="Discount" ItemStyle-Width="120px" AllowFiltering="false">
<ItemTemplate>
<asp:TextBox ID="txtAccountDiscount" runat="server" Text='<%# DiscountFormat(Container.DataItem, "account") %>' Width="80%"></asp:TextBox>
<asp:Label ID="lblNewProduct" runat="server" Font-Bold="true" ForeColor="Red" Font-Size="Large"></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Price" ColumnGroupName="Discount" ItemStyle-Width="120px" AllowFiltering="false">
<ItemTemplate>
<asp:TextBox ID="txtAccountPrice" runat="server" Text='<%# FinalPriceFormat(Container.DataItem, "account") %>' Width="80%" Enabled="<%# PriceEnable(Container.DataItem) %>"></asp:TextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Discount" UniqueName="Margin" ColumnGroupName="Margin" ItemStyle-Width="120px" AllowFiltering="false">
<ItemTemplate>
<asp:Label ID="txtMargin" runat="server" Text='<%# DiscountFormat(Container.DataItem, "margin") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Amount" ColumnGroupName="Margin" ItemStyle-Width="120px" AllowFiltering="false">
<ItemTemplate>
<asp:Label ID="txtMarginPrice" runat="server" Text='<%# FinalPriceFormat(Container.DataItem, "margin") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Discount Type" AllowFiltering="false">
<ItemTemplate>
<asp:RadioButton ID="rbDollar" runat="server" Text="$" GroupName="DiscountType" AutoPostBack="false" Checked='<%#CheckDollarDiscountType(Container.DataItem)%>' Enabled="false"/>
<asp:RadioButton ID="rbPercent" runat="server" Text="%" GroupName="DiscountType" AutoPostBack="false" Checked='<%#CheckPercentDiscountType(Container.DataItem)%>' Enabled="false"/>
<asp:HiddenField ID="hfProductID" runat="server" Value='<%# Eval("Product_ID") %>' />
<asp:HiddenField ID="hfDiscountLock" runat="server" Value='<%# Eval("Lock_Discount") %>' />
<asp:HiddenField ID="hfBasePrice" runat="server" Value='<%# Eval("Base_Price") %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</telerik:GridTableView>
</DetailTables>
<Columns>
<telerik:GridBoundColumn SortExpression="Parent_ID" HeaderText="Parent_ID" DataField="Parent_ID" Visible="false"></telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Category_Name" HeaderText="Category" HeaderButtonType="TextButton" DataField="Category_Name" Visible="false"></telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Carrier_Name" HeaderText="Product Category" HeaderButtonType="TextButton" DataField="Carrier_Name" AllowFiltering="false"></telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Parent Discount" Visible="true" AllowFiltering="false">
<ItemTemplate>
<asp:label ID="lblCarrierParentAccountDiscount" runat="server" Text="" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Apply Approved To Sell To All" Visible="true" AllowFiltering="false">
<ItemTemplate>
<asp:CheckBox ID="chkCarrierApprovedToSell" runat="server" Text="" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Discount" Visible="true" AllowFiltering="false">
<ItemTemplate>
<asp:TextBox ID="txtCarrierAccountDiscount" runat="server"></asp:TextBox>
<asp:Label ID="txtCarrierNewProduct" runat="server" BorderStyle="None" Font-Bold="true" ForeColor="Red" Font-Size="Large"></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<ClientSettings>
</ClientSettings>
</telerik:RadGrid>