我有几个共享用户控件的页面。当用户单击用户控件上的保存按钮时,我需要能够在父页面上循环Radgrid的项目并获取所选项目。 radgrid有一个复选框列。我可以看到我从网格单元格中获取值,但由于某种原因,复选框上的选中值始终为false,即使选中它也是如此。当从父页面本身调用而不是从用户控件调用时,这个相同的foreach代码可以工作。
这是一段代码段。
RadGrid ProjectGrid = (RadGrid) this.Parent.FindControl("ProjectGrid");
foreach (GridDataItem item in ProjectGrid.MasterTableView.Items)
{
string applicationPackageId = item.Cells[4].Text.ToString();
CheckBox chbx = item.FindControl("ProjectGridCheckBox") as CheckBox;
if (chbx != null && chbx.Checked)
{
numCheckedPackages++;
}
}
这是我的网格。
<telerik:RadGrid ID="ProjectGrid" runat="server" Skin="WF" ShowHeader="true" EnableEmbeddedSkins="false" AllowSorting="false" AllowFilteringByColumn="false" AllowMultiRowSelection="true">
<MasterTableView Width="100%" CommandItemDisplay="None" AutoGenerateColumns="false" TableLayout="Fixed">
<RowIndicatorColumn Visible="False">
<HeaderStyle Width="20px" />
</RowIndicatorColumn>
<ExpandCollapseColumn Resizable="False" Visible="False">
<HeaderStyle Width="20px" />
</ExpandCollapseColumn>
<Columns>
<telerik:GridTemplateColumn UniqueName="SelectColumn" DataField="Id" HeaderStyle-Width="5%" >
<ItemTemplate>
<asp:CheckBox ID="ProjectGridCheckBox" runat="server"/>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="Package.ProjectPackageNumberNameDisplayField" HeaderText="Project - Package" UniqueName="ProjectPackages" HeaderStyle-Width="85%"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="ApplicationPackageID" HeaderText="Id" HeaderStyle-Width="15%" UniqueName="PackageId"></telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<ClientSettings EnableRowHoverStyle="true">
<Selecting AllowRowSelect="True" />
</ClientSettings>
<HeaderStyle BackColor="#666666" Font-Names="verdana, arial" Font-Size="Small" Height="20px" />
</telerik:RadGrid>