Greetings,
I created a custom filter menu that I want to use for one of my radgrid columns. It works fine, but the problem is the menu appears for all columns. I only want this menu to appear for the column "Constituents." Note that I can't use "VaryByDataType" because my columns are all strings. Is it possible to create a custom filter menu for just one column?
ASPX:
C# CodeBehind:
I created a custom filter menu that I want to use for one of my radgrid columns. It works fine, but the problem is the menu appears for all columns. I only want this menu to appear for the column "Constituents." Note that I can't use "VaryByDataType" because my columns are all strings. Is it possible to create a custom filter menu for just one column?
ASPX:
<telerik:RadGrid ID="radGridForms" runat="server" AutoGenerateColumns="false"
GridLines="None" Skin="Windows7" AllowFilteringByColumn="True" AllowPaging="True"
AllowSorting="True" EnableLinqExpressions="False" Font-Bold="False" Font-Italic="False"
Font-Overline="False" Font-Size="Small" Font-Strikeout="False" Font-Underline="False"
OnItemDataBound="radGridForms_ItemDataBound" OnNeedDataSource="radGridForms_NeedDataSource">
<ClientSettings Selecting-AllowRowSelect="false" EnableRowHoverStyle="true">
<ClientEvents />
</ClientSettings>
<PagerStyle Position="Top" />
<MasterTableView PageSize="10" AllowSorting="true" EnableNoRecordsTemplate="true" ShowHeadersWhenNoRecords="true"
Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Size="Small"
Font-Strikeout="False" Font-Underline="False" DataKeyNames="FormID" >
<RowIndicatorColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
<ExpandCollapseColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn DataField="FormID" UniqueName="FormID" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridHyperLinkColumn DataNavigateUrlFields="PDFLink"
DataNavigateUrlFormatString="http://webcms/{0}" UniqueName="PDFLink"
AllowFiltering="false" HeaderText="Download" ItemStyle-HorizontalAlign="Center">
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</telerik:GridHyperLinkColumn>
<telerik:GridBoundColumn DataField="Description" HeaderText="Description" UniqueName="Description"
CurrentFilterFunction="Contains" AutoPostBackOnFilter="True" ItemStyle-Font-Size="XX-Small"
AllowSorting="true">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="State" HeaderText="State" UniqueName="State"
CurrentFilterFunction="Contains" AutoPostBackOnFilter="True" ItemStyle-Font-Size="XX-Small"
AllowSorting="true">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Constituents" HeaderText="Constituents" UniqueName="Constituents"
CurrentFilterFunction="Contains" AutoPostBackOnFilter="True" ItemStyle-Font-Size="XX-Small"
AllowSorting="true">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Keywords" HeaderText="Keywords" UniqueName="Keywords"
CurrentFilterFunction="Contains" AutoPostBackOnFilter="True" ItemStyle-Font-Size="XX-Small"
AllowSorting="true">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Version" AllowFiltering="false" ItemStyle-Font-Size="XX-Small"
HeaderText="Ver" UniqueName="Version" >
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Type" AllowFiltering="false" ItemStyle-Font-Size="XX-Small"
HeaderText="Type" UniqueName="Type" AllowSorting="true">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Secure" UniqueName="Secure" Visible="false">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
C# CodeBehind:
protected void Page_Init(object sender, EventArgs e)
{
radGridForms.FilterMenu.Items.Clear();
GridFilterMenu filterMenu = radGridForms.FilterMenu;
RadMenuItem onlyEmployerMenuItem = new RadMenuItem();
RadMenuItem onlyProducerMenuItem = new RadMenuItem();
RadMenuItem onlyIndividualsMenuItem = new RadMenuItem();
radGridForms.FilterMenu.Items.Add(onlyEmployerMenuItem);
radGridForms.FilterMenu.Items.Add(onlyProducerMenuItem);
radGridForms.FilterMenu.Items.Add(onlyIndividualsMenuItem);
onlyEmployerMenuItem.Text = "Show Only Employers";
onlyEmployerMenuItem.Value = "Employers";
onlyProducerMenuItem.Text = "Show Only Producers";
onlyProducerMenuItem.Value = "Producers";
onlyIndividualsMenuItem.Text = "Show Only Individuals";
onlyIndividualsMenuItem.Value = "Individuals";
filterMenu.ItemClick += new RadMenuEventHandler(filterMenu_ItemClick);
}
protected void filterMenu_ItemClick(object sender, RadMenuEventArgs e)
{
if (e.Item.Value.ToString() == "Employers")
{
radGridForms.MasterTableView.FilterExpression = "([Constituents] = 'Employers') ";
GridColumn column = radGridForms.MasterTableView.GetColumnSafe("Constituents");
column.CurrentFilterFunction = GridKnownFunction.Contains;
radGridForms.DataSource = null;
radGridForms.Rebind();
}
else if(e.Item.Value.ToString() == "Producers")
{
radGridForms.MasterTableView.FilterExpression = "([Constituents] = 'Producers') ";
GridColumn column = radGridForms.MasterTableView.GetColumnSafe("Constituents");
column.CurrentFilterFunction = GridKnownFunction.Contains;
radGridForms.DataSource = null;
radGridForms.Rebind();
}
else if (e.Item.Value.ToString() == "Individuals")
{
radGridForms.MasterTableView.FilterExpression = "([Constituents] = 'Individuals') ";
GridColumn column = radGridForms.MasterTableView.GetColumnSafe("Constituents");
column.CurrentFilterFunction = GridKnownFunction.Contains;
radGridForms.DataSource = null;
radGridForms.Rebind();
}
}