复选框字段在gridview中不可见
本文关键字:gridview 字段 复选框 | 更新日期: 2023-09-27 18:11:09
我在asp.net工作。试图在gridview中显示从web服务检索到的数据。我想在gridview中有五个字段,一个复选框字段和其他四个来自service的值,即
CheckboxField,FirstName,LastName,OffenseName,FineAmount
1)下面是gridview代码,我只是拖放到页面
<asp:GridView ID="GridView1" runat="server">
<HeaderStyle BackColor="#CCFF33" />
</asp:GridView>
2)以下是我的方法,我调用,创建字段在一个数据表,我将绑定到gridview稍后。
DataTable table = new DataTable();
table.Columns.Add("Select", typeof(CheckBox)); // i think problem is here
table.Columns.Add("FirstName", typeof(string));
table.Columns.Add("LastName", typeof(string));
table.Columns.Add("OffenseName", typeof(string));
table.Columns.Add("FineAmount", typeof(string));
下面是填充数据表的代码,其中包含数据
for (int i = 0; i < noOfContacts; i++)
{
object[] rowVals = new object[5];
rowVals[0] = giveCheckBox(i); // this method is declared below, which gives me a checkbox with unique id
rowVals[1] = listOfContacts[i].FirstName;
rowVals[2] = listOfContacts[i].LastName;
rowVals[3] = listOfCharges[j].GHQOffenseId;
rowVals[4] = listOfCharges[j].GHQFineAmount;
table.Rows.Add(rowVals);
}
GridView1.DataSource = table;
GridView1.DataBind();
4)这个方法给了我一个复选框,唯一的id
public CheckBox giveCheckBox(int i)
{
CheckBox chk = new CheckBox();
chk.ID = "chk_" + i;
chk.Text = "Pay";
return chk;
}
问题是当我运行程序时,它只显示四个字段,而不是第一个复选框字段。我想显示那个must。
但是如果我在设计视图中添加复选框字段,(单击gridview上的箭头,单击添加新字段),那么它会在绑定行抛出异常,即
GridView1.DataBind();
请指导我如何使复选框字段可见
您可以在设计中插入所有字段,如下面的代码:
<asp:GridView ID="GridView1" runat="server">
<HeaderStyle BackColor="#CCFF33" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox runat="server" ID="chk_box" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="FirstName" HeaderText="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" />
<asp:BoundField DataField="OffenseName" HeaderText="OffenseName" />
<asp:BoundField DataField="FineAmount" HeaderText="FineAmount" />
</Columns>
</asp:GridView>
和后面的代码:
DataTable table = new DataTable();
for (int i = 0; i < 2; i++)
{
DataRow dr = table.NewRow();
dr["FirstName"] = "Ahmed";
dr["LastName"] = "Ahmed";
dr["OffenseName"] = "Ahmed";
dr["FineAmount"] = "Ahmed";
table.Rows.Add(dr);
}
GridView1.DataSource = table;
GridView1.DataBind();
将复选框添加到表中(无论如何都是错误的),然后添加模板字段到gridview,如下所示。还要指定autogenerateccolumns =true。然后删除代码背后的所有代码,这些代码试图将复选框列添加到表和gridview中。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True">
<Columns>
<asp:TemplateField ShowHeader="False" >
<ItemTemplate>
<asp:CheckBox ID="checkBoxSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<HeaderStyle BackColor="#CCFF33" />
</Columns>
</asp:GridView>
是的,您是对的,问题就在那个代码片段中。替换以下行
table.Columns.Add("Select", typeof(CheckBox));
和这个
table.Columns.Add("Select", typeof(bool));