Первый элемент в Databound CheckBoxList не отображается - PullRequest
2 голосов
/ 21 мая 2011

Предположим, у меня есть таблица SQL под названием "Facility", которая выглядит следующим образом:

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

и продолжается как таковая для 30 с лишним различных помещений.Я пытаюсь привязать их к CheckBoxList в 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();

Теперь это работает абсолютно нормально, за исключением одного: он не отображает CheckBox для первого элемента в списке, Lecture Theatre.Любое другое средство в списке прекрасно отображается с CheckBox, но не с Lecture Theater - и я понятия не имею, почему!

Это не проблема на стороне SQL, потому что когда я запускаю запрос самостоятельно,возвращает полный список.И я не думаю, что это специфично для CheckBoxList, потому что, когда я попытался связать его с DropDownList, у меня возникла та же проблема.Я в значительной степени озадачен тем, почему он делает это, поэтому любая оценка будет высоко ценится!

Приветствия

Ответы [ 2 ]

1 голос
/ 21 мая 2011

Удалить строку:

FacilityData.Read();

Это заставляет читателя двигаться вперед на одну ступеньку, заставляя вас потерять первый предмет

0 голосов
/ 21 мая 2011

Не звоните Read() на SqlReader. Просто назначьте его как источник данных для вашего CheckBoxList после вызова ExecuteReader(). Когда вы устанавливаете его как DataSource, он начинается с вызова Read (), и, таким образом, в вашем случае первая запись пропускается.

...