I am trying to implement a Filter Template with a Combo Box that uses Images
- there is no explicit DataTextField or DataValueField in the data items
it doesn't work at all!
the markup:
<
telerik:GridTemplateColumn
UniqueName
=
"Target"
DataField
=
"Target"
SortExpression
=
"Target"
HeaderText
=
"Target"
HeaderStyle-Width
=
"40"
>
<
FilterTemplate
>
<
telerik:RadComboBox
ID
=
"rcbTarget"
OnPreRender
=
"rcbTarget_PreRender"
OnSelectedIndexChanged
=
"rcbTarget_SelectedIndexChanged"
AutoPostBack
=
"true"
runat
=
"server"
/>
</
FilterTemplate
>
<
ItemTemplate
>
<
asp:ImageButton
ID
=
"imgTarget"
ImageUrl
=
"../Images/tgt_neutral.png"
CommandName
=
"SetTarget"
CommandArgument='<%# Eval("Target") %>' Height="36" Width="36" runat="server" />
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
the code behind:
protected void rcbTarget_PreRender(object sender, EventArgs e)
{
RadComboBox rcbTarget;
rcbTarget = sender as RadComboBox;
if (ViewState["rcbTarget"] == null) { } else
{
rcbTarget.SelectedValue = ViewState["rcbTarget"].ToString();
}
}
protected void rgDraftProspects_ItemCreated(object sender, GridItemEventArgs e)
{
GridFilteringItem theFilterItem;
RadComboBox rcbTarget, rcbPager;
if (e.Item is GridFilteringItem)
{
theFilterItem = e.Item as GridFilteringItem;
//set dimensions for the filters
rcbTarget = theFilterItem["Target"].Controls[1] as RadComboBox;
FillTargetFilter(rcbTarget);
}
}
private void FillTargetFilter(RadComboBox rcbTarget)
{
RadComboBoxItem rcbiTarget;
rcbiTarget = new RadComboBoxItem();
rcbiTarget.Text = "No Filter";
rcbiTarget.Value = string.Empty;
rcbTarget.Items.Add(rcbiTarget);
// rcbiTarget = new RadComboBoxItem();
// rcbiTarget.ImageUrl = "../Images/tgt_neutral.png";
// rcbiTarget.Value = DBNull.Value.ToString();
// rcbTarget.Items.Add(rcbiTarget);
rcbiTarget = new RadComboBoxItem();
rcbiTarget.ImageUrl = "../Images/tgt_yes.png";
rcbiTarget.Value = "1";
rcbTarget.Items.Add(rcbiTarget);
rcbiTarget = new RadComboBoxItem();
rcbiTarget.ImageUrl = "../Images/tgt_no.png";
rcbiTarget.Value = "0";
rcbTarget.Items.Add(rcbiTarget);
}
protected void rcbTarget_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
StringBuilder sb;
ViewState["rcbTarget"] = e.Value;
sb = new StringBuilder();
sb.Append("([Target] = '");
sb.Append(e.Value);
sb.Append("') ");
rgDraftProspects.MasterTableView.FilterExpression = sb.ToString(); ;
rgDraftProspects.MasterTableView.Rebind();
}