【问题标题】:First item in Databound CheckBoxList not showing upDatabound CheckBoxList 中的第一项未显示
【发布时间】:2011-05-21 00:14:23
【问题描述】:

假设我有一个名为“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();

现在这完全可以正常工作,除了一件事:它没有为列表中的第一项显示 CheckBox,Lecture Theatre。列表中的所有其他设施都显示有 CheckBox,但 Lecture Theatre 却没有 - 我不知道为什么!

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

干杯

【问题讨论】:

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


    【解决方案1】:

    删除线:

    FacilityData.Read();
    

    这导致读者前进一个档次,使您丢失第一项

    【讨论】:

    • ...非常感谢!这完全解决了我的问题......非常感谢,虽然我绝不是编程方面的“专家”,但我已经做了足够长的时间来本能地知道这将是由一些愚蠢的人引起的 -像这样的行:p
    【解决方案2】:

    不要在SqlReader 上致电Read()。只需在调用ExecuteReader() 后将其指定为 CheckBoxList 的数据源。 当您将其设置为 DataSource 时,它​​首先调用 Read(),因此在您的情况下,第一条记录将被跳过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多