我将数据表值绑定到gridview。我已经在 aspx 页面中永久添加了三个模板字段列,并通过使用 itemplate 接口创建列来添加两个动态复选框列。一切正常,直到数据绑定。但我想从数据表值绑定复选框值。如果 datatable 值为 true ,则选中复选框值。为此,我尝试了以下代码。
DataTable bindclassattendance = inter.getstudentattendresult(comp);
Createcolumn();
if (bindclassattendance.Rows.Count>0 )
{
Classattendancegrid.DataSource = bindclassattendance;
Classattendancegrid.DataBind();
for (int i = 0; i < bindclassattendance.Rows.Count; i++)
{
bool check1 = Convert.ToBoolean(bindclassattendance.Rows[i]["AM"].ToString());
if (check1)
{
CheckBox chk = Classattendancegrid.Rows[i].FindControl("AM") as CheckBox;
chk.Checked = true;
}
else
{
CheckBox chk = Classattendancegrid.Rows[i].FindControl("AM") as CheckBox;
chk.Checked = false;
}
bool check2 = Convert.ToBoolean(bindclassattendance.Rows[i]["PM"].ToString());
if (check2)
{
CheckBox chk = Classattendancegrid.Rows[i].FindControl("PM") as CheckBox;
chk.Checked = true;
}
else
{
CheckBox chk = Classattendancegrid.Rows[i].FindControl("PM") as CheckBox;
chk.Checked = false;
}
}
动态列Createcolumn()
是:
private void Createcolumn()
{
TemplateField amtemp = new TemplateField();
amtemp.ShowHeader = true;
amtemp.HeaderText = "AM";
amtemp.ItemTemplate = new gridviewtemplate(DataControlRowType.DataRow, "AM", "AM", "CheckBox");
Classattendancegrid.Columns.Add(amtemp);
TemplateField pmtemp = new TemplateField();
pmtemp.ShowHeader = true;
pmtemp.HeaderText = "PM";
pmtemp.ItemTemplate = new gridviewtemplate(DataControlRowType.DataRow, "PM", "PM", "CheckBox");
Classattendancegrid.Columns.Add(pmtemp);
}
并发生上述错误。如何解决它,我从未使用任何名称作为“cb1”。该错误发生在下一行
CheckBox chk = Classattendancegrid.Rows[i].FindControl("AM") as CheckBox;
我的 aspx 页面是
<asp:GridView ID="Classattendancegrid" runat="server"
AutoGenerateColumns="False" onrowdatabound="Classattendancegrid_RowDataBound"
style="margin-left: 184px; margin-top: 27px">
<Columns>
<asp:TemplateField HeaderText="AdmissionNumber">
<ItemTemplate>
<asp:Label ID="lbladmissionnumber" runat="server"
Text='<%#Eval("AdmissionNumber") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="RollNumber">
<ItemTemplate>
<asp:Label ID="lblrollno" runat="server" Text='<%#Eval("Rollnumber") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="StudentName">
<ItemTemplate>
<asp:Label ID="lblStudentName" runat="server" Text='<%#Eval("Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</column>
</asp:GridView)