2015-03-13 5 views
0

я есть контроль:получение SelectedValue из CheckBoxList DataSource

<asp:CheckBoxList ID="CheckBoxListdepts" AutoPostBack="true" BorderWidth="1PX" BorderColor="#3f3a71" Width="100%" runat="server" 
         DataSourceID="SqlDataSourcedepts" 
         DataTextField="dept_name" 
         DataValueField="dept_id" 
         OnSelectedIndexChanged="CheckBoxListdepts_SelectedIndexChanged"> 

У меня есть массив 5 CheckBoxList и это мой код

protected void CheckBoxListdepts_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      CheckBoxList[] mylists = { CheckBoxList1, CheckBoxList2, CheckBoxList3, CheckBoxList4, CheckBoxList5 }; 

      for (int i = 0; i < 5; i++) 
      { 
       mylists[i].DataSource = (from ListItem rr in CheckBoxListdepts.Items 
             where rr.Selected == true 
             select rr);  


mylists[i].DataBind(); 


      }   
     } 

проблема, когда я пытаюсь получить выбранное значение от checkbox1list1 я получил selectedText вместо так:

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      Label7.Text = CheckBoxList1.SelectedItem.Value.ToString(); 
     } 

я получил SelectedText Почему «rr» потерял свою ценность?

ответ

1

Я не знаю, что ваши 5 CheckBoxLists выглядеть, но я думаю, что вы должны установить их DataValueField и DataTextField свойства, чтобы получить то, что вы хотите:

<asp:CheckBoxList1 runat="server" DataValueField="Value" DataTextField="Text" />