数据绑定复选框列表中的第一项未显示

本文关键字:一项 显示 列表 复选框 数据绑定 | 更新日期: 2023-09-27 17:57:02

>假设我有一个名为"Facility"的SQL表,如下所示:

|| FacilityID ||          Name        ||
      0             Lecture Theatre
      1             Seminar Room
      2             Computer Lab
      3             Electronics Lab
     ...                ...

并继续为30多个不同的房间设施。我正在尝试将这些数据绑定到 ASP.NET (C#) 中的复选框列表,如下所示:

<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();

现在这绝对可以正常工作,除了一件事:它不会为列表中的第一项显示复选框,演讲厅。列表中的其他设施都显示了一个复选框,但不是演讲厅 - 我不知道为什么!

当我

自己运行查询时,这在 SQL 端不是问题,它会返回完整列表。而且我不认为它特定于CheckBoxList,因为当我尝试绑定到DropDownList时,我遇到了同样的问题。我对它为什么要这样做感到非常困惑,所以任何见解将不胜感激!

干杯

数据绑定复选框列表中的第一项未显示

删除该行:

FacilityData.Read();

这会导致读者向前移动一个档次,使您丢失第一项

不要在SqlReader上调用Read()。只需在调用 ExecuteReader() 后将其指定为复选框列表的数据源即可。当您将其设置为数据源时,它首先调用 Read(),因此在您的情况下,将跳过第一条记录。