假设我有一个名为“Facility”的SQL表,如下所示:
|| FacilityID || Name ||
0 Lecture Theatre
1 Seminar Room
2 Computer Lab
3 Electronics Lab
... ...
并继续这样的30多个不同的房间设施。我正在尝试将这些数据绑定到ASP.NET(C#)中的CheckBoxList,如下所示:
<asp:CheckBoxList ID="FacilityCheckList" AutoPostBack="true" runat="server">
</asp:CheckBoxList>
我在C#中用来实现这个目的的代码如下:
String strSQL;
strSQL = "SELECT * FROM Facility";
SqlCommand cmd3 = new SqlCommand(strSQL, DBConnection);
DBConnection.Open();
SqlDataReader FacilityData;
FacilityData = cmd3.ExecuteReader();
FacilityData.Read();
FacilityCheckList.DataSource = FacilityData;
FacilityCheckList.DataValueField = "Name";
FacilityCheckList.DataBind();
DBConnection.Close();
现在这个工作非常好,除了一件事:它没有为列表中的第一个项目Lecture Theater显示CheckBox。列表中的每个其他设施都显示CheckBox就好了,但不是Lecture Theatre - 我不明白为什么!
当我自己运行查询时,它不是SQL端cos的问题,它返回完整列表。而且我认为它不是特定于CheckBoxList,因为当我尝试绑定到DropDownList时,我遇到了同样的问题。我非常难过为什么会这样做,所以任何见解都会非常感激!
干杯
答案 0 :(得分:1)
删除该行:
FacilityData.Read();
这导致读者向前移动一个等级,使你失去第一个项目
答案 1 :(得分:0)
请勿在{{1}}上致电Read()
。只需在调用SqlReader
后将其指定为CheckBoxList的数据源即可。
当你将它设置为DataSource时,它会通过调用Read()来启动,因此在你的情况下会跳过第一条记录。