Не могу посмотреть CheckBoxList из базы данных - PullRequest
0 голосов
/ 19 декабря 2011

У меня есть 2 страницы, одна для добавления данных в базу данных, а другая для редактирования, поэтому в добавлении у меня есть CheckBoxList, я добавил их в базу данных следующим образом

URL-адреса: 1,2,3,4,5 а цифры являются значениями "ключей" из флажка

Я использовал этот код

String values = "";        
foreach (ListItem i in CheckBoxList1.Items)
{
      if (CheckBoxList1.Items.Count == 1)
             values += i.Value;
      else
        if (i.Selected)
        {
             values += i.Value + ",";

        }
}

и затем я добавил значения в базу данных, и она отлично работала, теперь моя проблема на странице редактирования, так как сначала я хочу показать флажки из базы данных, я использовал это, но он не работает

при загрузке страницы

protected void Page_Load(object sender, EventArgs e)
{

        if (!Page.IsPostBack)
        {
          ... connection to the database .. etc

            try
            {
                con.Open();
                rd = cmd.ExecuteReader();
                if (rd.Read())
                {                 
                    String values = rd["urls"].ToString();//workes perfect

                    string[] arr = values.Split(',');//works perfect
                    int x = CheckBoxList1.Items.Count;//this will get me a zero

                    foreach (ListItem item in CheckBoxList1.Items)// doesnt enter here
                    {
                        foreach (string s in arr)
                        {
                            if (item.Text == s)
                            {
                                item.Selected = true;
                            }
                        }
                    }

             .... //exceptions handling

мой код для страницы aspx

 <asp:CheckBoxList ID="CheckBoxList1" runat="server" DataSourceID="urls_ds" 
                        DataTextField="name" DataValueField="id">
   </asp:CheckBoxList>
  <asp:SqlDataSource ID="urls_ds" runat="server" 
      ConnectionString="<%$ ConnectionStrings:testing_cs %>" 
       SelectCommand="SELECT * FROM [tbl_urls]"></asp:SqlDataSource>

Я получаю контрольный список из базы данных, используя SqlDataSource, и на странице я вижу, как они помещаются, когда я печатаю количество элементов, его ноль

где может быть проблема ??

Спасибо

1 Ответ

1 голос
/ 20 декабря 2011

Редактировать: Этот пост описывает вашу проблему точно http://forums.asp.net/t/1488957.aspx/1, и предлагает два решения

Вот что я вижу

if(!Page.IsPostBack)

Это означает, что вы находитесь на НОВОЙ копии страницы, поэтому CheckBoxList1 пуст, пока вы не загрузите его с данными. Бьюсь об заклад, происходит дальше в вашем коде. Просто убедитесь, что вы загрузили его, прежде чем использовать его.

Редактировать: при использовании SqlDataSource для заполнения элементов управления вы должны помнить, что ссылающиеся на него элементы управления связывают ПОСЛЕ выполнения Page_Load. Ссылка выше дает два метода обхода (либо ручной вызов Control.DataBind, либо обработка события Control.Databound).

...