在ASPxGridView中查找复选框控件

时间:2014-04-22 06:05:20

标签: c# checkbox devexpress aspxgridview

我有一个AspxGridView,它在gridViewDatacheckColumn中有一个复选框dataitemTemplate。现在我想找到每一行的控件,并在运行时取消选中/检查它们。

这是我的ASPxGridView代码:

<dx:ASPxGridView ID="RadGrid2" runat="server" AutoGenerateColumns="False" ClientInstanceName="grid"
    KeyFieldName="StoreID" SettingsPager-Mode="ShowAllRecords" Width ="50%">
    <Settings ShowVerticalScrollBar="true" />
    <Columns>
        <dx:GridViewDataCheckColumn Caption="#" VisibleIndex="0"  Width ="25%">
            <DataItemTemplate>
                <dx:ASPxCheckBox ID="CheckBox1" runat="server">
                </dx:ASPxCheckBox>
            </DataItemTemplate>
        </dx:GridViewDataCheckColumn>
        <dx:GridViewDataTextColumn FieldName="STORE_NAME" Caption="Store name" ReadOnly="True" VisibleIndex="1" Width ="75%">
            <EditFormSettings Visible="False" />
        </dx:GridViewDataTextColumn>
    </Columns>
</dx:ASPxGridView>

这是我的代码,用于迭代到每一行并找到控件。

for (int i = 0; i < RadGrid2.VisibleRowCount; i++)
    {
        CheckBox chk = RadGrid2.FindRowTemplateControl(i, "CheckBox1") as CheckBox;
        chk.Checked = false;
    }

我得到一个空引用异常,所以我猜,它找不到控件,我做错了。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

您使用错误的方法ASPxGridView.FindRowTemplateControl搜索指定数据row's template中包含的指定服务器控件。

您应该使用ASPxGridView.FindRowCellTemplateControl方法查找驻留在列的DataItemTemplate容器或指定数据cell's template中的控件。

另请参阅Accessing Controls Contained within Templates主题

参考文献:
ASPxGridView - How to find a control inside the DataItem template
Cant find ASPxTextBox control in DataItem template using FindRowTemplateControl