我有一个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;
}
我得到一个空引用异常,所以我猜,它找不到控件,我做错了。有任何想法吗?谢谢!
答案 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