I'm using the RadGrid in DNN and everything works great.
However, I'm trying to implement a custom filter. Here's what I've got:
The header of my .ascx (Notice the "Register" directive):
A few lines down, I have a RadGrid control with the registered control as one of my columns:
In the code-behind:
Please notice a few things...
The .ascx inherits "DesertedRoadStudios.Modules.DiscipleHatTournament.admin" and the in the code-behind the public partial class "DesertedRoadStudios.Modules.DiscpleHatTournament.admin" inherits PortalModuleBase (what its suppose to inherit for DNN).
However, at the END of the code-behind, I create a new namespace "DesertedRoadStudios.Controls" in which I place the custom filter "GenderCustomFilter" that inherits the GridBoundColumn.
I thought this would be okay, but perhaps, I'm not setting up the "Register" directive correctly. Nonetheless, the control "<custom:GenderCustomFilter />" cannot be located. How do I do this correctly without having to compile classes and install them into the DNN BIN folder?
Thanks,
Joshua
However, I'm trying to implement a custom filter. Here's what I've got:
The header of my .ascx (Notice the "Register" directive):
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="admin.ascx.cs" Inherits="DesertedRoadStudios.Modules.DiscipleHatTournament.admin" %> | |
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> | |
<%@ Register TagPrefix="custom" Namespace="DesertedRoadStudios.Controls" %> | |
A few lines down, I have a RadGrid control with the registered control as one of my columns:
<custom:GenderCustomFilter UniqueName="gender" DataField="gender" HeaderText="Gender" /> | |
In the code-behind:
namespace DesertedRoadStudios.Controls | |
{ | |
public class GenderCustomFilter : GridBoundColumn | |
{ | |
//RadGrid calls this method when it initializes the controls inside the filtering item cells | |
protected override void SetupFilterControls(TableCell cell) | |
{ | |
base.SetupFilterControls(cell); | |
cell.Controls.RemoveAt(0); | |
DropDownList list = new DropDownList(); | |
list.ID = "list" + this.DataField; | |
list.AutoPostBack = true; | |
list.SelectedIndexChanged += new EventHandler(list_SelectedIndexChanged); | |
list.Items.Add("Male"); | |
list.Items.Add("Female"); | |
cell.Controls.AddAt(0, list); | |
cell.Controls.RemoveAt(1); | |
} | |
void list_SelectedIndexChanged(object sender, EventArgs e) | |
{ | |
GridFilteringItem filterItem = (sender as DropDownList).NamingContainer as GridFilteringItem; | |
filterItem.FireCommandEvent("Filter", new Pair("Contains", this.UniqueName)); | |
} | |
//RadGrid calls this method when the value should be set to the filtering input control(s) | |
protected override void SetCurrentFilterValueToControl(TableCell cell) | |
{ | |
base.SetCurrentFilterValueToControl(cell); | |
DropDownList list = (DropDownList)cell.Controls[0]; | |
if (this.CurrentFilterValue != string.Empty) | |
{ | |
list.SelectedValue = this.CurrentFilterValue; | |
} | |
} | |
//RadGrid calls this method to extract the filtering value from the filtering input control(s) | |
protected override string GetCurrentFilterValueFromControl(TableCell cell) | |
{ | |
DropDownList list = (DropDownList)cell.Controls[0]; | |
return list.SelectedValue; | |
} | |
protected override string GetFilterDataField() | |
{ | |
return this.DataField; | |
} | |
} | |
} | |
Please notice a few things...
The .ascx inherits "DesertedRoadStudios.Modules.DiscipleHatTournament.admin" and the in the code-behind the public partial class "DesertedRoadStudios.Modules.DiscpleHatTournament.admin" inherits PortalModuleBase (what its suppose to inherit for DNN).
However, at the END of the code-behind, I create a new namespace "DesertedRoadStudios.Controls" in which I place the custom filter "GenderCustomFilter" that inherits the GridBoundColumn.
I thought this would be okay, but perhaps, I'm not setting up the "Register" directive correctly. Nonetheless, the control "<custom:GenderCustomFilter />" cannot be located. How do I do this correctly without having to compile classes and install them into the DNN BIN folder?
Thanks,
Joshua