访问GridCheckboxColumn

时间:2012-03-02 15:18:12

标签: c# asp.net grid telerik radgrid

我的网格中有一个GridCheckboxColumn,需要根据复选框创建一个GridTemplateColumn。 例如,

第1行,

如果选中该复选框,则GridTempleColumn标签显示“YES”, 如果未选中该复选框,则GridTempleColumn标签显示“NO”, 如果复选框为NULL:它显示“N / A”。

总结一下,我在我的aspx页面中有这个:

<telerik:GridCheckBoxColumn DataField="facturable" DataType="System.Boolean" HeaderText="facturable"
    SortExpression="facturable" UniqueName="facturable">
</telerik:GridCheckBoxColumn>

                <telerik:GridTemplateColumn  HeaderText="Type de tickets"
    UniqueName="typedestickets">
    <ItemTemplate><asp:Label id="test" runat="server"></asp:Label></ItemTemplate>
</telerik:GridTemplateColumn>

我在代码背后的尝试:(不工作)

protected void RadGrid1_DataBound(object sender, EventArgs e)
{
    foreach (Telerik.Web.UI.GridDataItem dataItem in RadGrid1.MasterTableView.Items)
    {
        CheckBox chkDelete = (CheckBox)dataItem.FindControl("facturable"); 
        Label label = (Label)dataItem.FindControl("test");

        if (chkDelete.Checked == true) { label.Text = "MA"; }
    }



}

提前感谢您的帮助

3 个答案:

答案 0 :(得分:2)

在访问您的控件之前,检查“e.item”是否为GridDataItem。我在我正在处理的应用程序中执行类似的检查,除了我正在使用“OnItemDatabound”。

protected void grdSummary_OnItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        // Access your controls here
    }

}

答案 1 :(得分:2)

CheckBox checkboxfacturable = (CheckBox)dataItem["facturable"].Controls[0]; 
Label label = (Label)dataItem["typedestickets"].Controls[0];

答案 2 :(得分:1)

大多数控件(包括网格)都可以绑定各种对象,而不仅仅是数据项。在使用e.Item之前,您应该始终检查OnItemDataBound处理程序中{{1}}的类型是否正确。