我有这个gridview,我需要填充超过25个数据库表。这些表是查找表,此gridview用于查找表维护。
不是将特定列放在gridview中,而是直接将dataTable绑定到gridview。
以下方法将(网格视图中的最后一列)活动列的值“y”/“n”分配给复选框。
<asp:GridView ID="gvTables" runat="server" CssClass="Grid" Width="100%" AutoGenerateColumns="true" Font-Names="Arial"
BorderWidth="1" PagerSettings-Mode="Numeric" Font-Size="8.7pt" Font-Bold="false" AlternatingRowStyle-BackColor="#f4f4f4"
HeaderStyle-BackColor="LightGray" AllowPaging="True" ShowFooter="false" PageSize="12"
OnPageIndexChanging="gvTables_PageIndexChanging"
OnRowDataBound="gvTables_RowDataBound"
OnRowCreated="gvTables_RowCreated"
OnSelectedIndexChanged="gvTables_SelectedIndexChanged">
<PagerStyle CssClass="pgr" />
</asp:GridView>
代码:
private void SetCheckBoxesInGV()
{
////add checkboxes in place of active
for (int i = 0; i < gvTables.Rows.Count; i++)
{
System.Web.UI.WebControls.CheckBox chk = new System.Web.UI.WebControls.CheckBox();
chk.ID = "chk";
chk.Checked = gvTables.Rows[i].Cells[gvTables.Rows[0].Cells.Count - 1].Text.Trim() == "y" ? true : false;
gvTables.Rows[i].Cells[gvTables.Rows[0].Cells.Count - 1].Controls.Add(chk);
gvTables.Rows[i].Cells[gvTables.Rows[0].Cells.Count - 1].ControlStyle.CssClass = "ItemCenter";
}
}
所以最后一列看起来像是这样而不是y / n。
现在我想获取复选框值,我正在使用它,并认为它可以工作,但事实并非如此。给出空值并且“对象引用未设置为对象的实例”。
((CheckBox)gvTables.Rows[i].Cells[gvTables.Rows[0].Cells.Count - 1].FindControl("chk")).Checked