2013-08-05 75 views
0

当复选框列表被选中时,我已经设置了以下方法。获取复选框列表中的选定值

protected void chk1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     foreach (ListItem list in chk1.Items) 
     { 
      if (list.Selected) 
      { 
       string name = list.Value.ToString(); 
      } 
     } 

    } 

我需要从复选框列表中显示选中的项目。但是,对于每次迭代,所选属性始终为false。它永远不会满足条件

   if (list.Selected) 
       { 
        string name = list.Value.ToString(); 
       } 

我该如何解决这个问题?

+0

多少个项目进行检查?如果您有超过1个ListItem,则'name'将被覆盖 – MethodMan

+0

列表中有3个项目,我需要显示选中的项目。有没有一种方法可以确保从不检查> 1的值。我不想使用单选按钮 – user544079

+0

您是否想在每次检查或取消选中某个项目时执行检查?控件上的AutoPostBack属性也决定了如果你想在点击按钮后获取值的行为,例如,我会从现有的事件处理程序中删除代码,并将该代码放入单独的方法或button_Click事件中.. – MethodMan

回答

1

尝试这样的事情

var selectedListItems = chk1.Items.Cast<ListItem>().Where(x => x.Selected); 

或在您的情况

var list = chk1.Items.Cast<ListItem>().Where(x => x.Selected); 

现在你将有一个集合,您可以检查/代码对

也确保该代码是被解雇或检查是否有一个PostBack

y OU可以通过检查if(!Is.PostBack){ }

0

我的钱是你重新绑定在每一个回发的控件检查这一点,而不是这样做:

if (!Page.IsPostBack) 
{ 
    // Only bind controls on initial page and let viewstate remember what the user did 
}