数据绑定CheckBoxList中的第一项未显示

时间:2011-05-21 00:14:24

标签: c# asp.net data-binding checkboxlist

假设我有一个名为“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时,我遇到了同样的问题。我非常难过为什么会这样做,所以任何见解都会非常感激!

干杯

2 个答案:

答案 0 :(得分:1)

删除该行:

FacilityData.Read();

这导致读者向前移动一个等级,使你失去第一个项目

答案 1 :(得分:0)

请勿在{{1​​}}上致电Read()。只需在调用SqlReader后将其指定为CheckBoxList的数据源即可。 当你将它设置为DataSource时,它会通过调用Read()来启动,因此在你的情况下会跳过第一条记录。