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();
}
