2013-03-25 78 views
0

我目前有两个列表框(列表框1和列表框2)在ListBox1(value1,value2,value3等)中有12个静态值,允许用户在他们使用添加和删除按钮。我也有一个下拉框。如何在该下拉框中进行特定选择时对ListBox2执行最大值?换句话说,如果我只是想在下拉框中选择一个值时,允许将Listbox1中最多一个条目移动到Listbox2。如何限制列表框中的最大数值(条目)

protected void MoveRight(object sender, EventArgs e) 
{ 
    while (ListBox1.Items.Count > 0 && ListBox1.SelectedItem != null) 
    { 
     ListItem selectedItem = ListBox1.SelectedItem; 
     selectedItem.Selected = false; 
     ListBox2.Items.Add(selectedItem); 
     ListBox1.Items.Remove(selectedItem); 
    } 
} 
protected void MoveLeft(object sender, EventArgs e) 
{ 
    while (ListBox2.Items.Count > 0 && ListBox2.SelectedItem != null) 
    { 
     ListItem selectedItem = ListBox2.SelectedItem; 
     selectedItem.Selected = false; 
     ListBox1.Items.Add(selectedItem); 
     ListBox2.Items.Remove(selectedItem); 
    } 
} 
private void BindData() 
{ 
    ListBox1.Items.Add(new ListItem("01", "01")); 
    ListBox1.Items.Add(new ListItem("02", "02")); 
    ListBox1.Items.Add(new ListItem("03", "03")); 
    ListBox1.Items.Add(new ListItem("04", "04")); 
    ListBox1.Items.Add(new ListItem("05", "05")); 
    ListBox1.Items.Add(new ListItem("06", "06")); 
    ListBox1.Items.Add(new ListItem("07", "07")); 
    ListBox1.Items.Add(new ListItem("08", "08")); 
    ListBox1.Items.Add(new ListItem("09", "09")); 
    ListBox1.Items.Add(new ListItem("10", "10")); 
    ListBox1.Items.Add(new ListItem("11", "11")); 
    ListBox1.Items.Add(new ListItem("12", "12")); 

} 
+0

您在最后一句中引入了一个“下拉框”。这是如何下拉列表框相关的框? – 2013-03-25 16:39:16

+0

问题描述不清楚。 – David 2013-03-25 16:40:55

回答

0

使用for循环来迭代m中的较小值ax和列表中的项目数量。

protected void MoveRight(object sender, EventArgs e) 
{ 
    int max = 1; 
    int iterations = ListBox1.Items.Count < max ? ListBox1.Items.Count : max 
    for(int i = 0; i < iterations; i++) 
    { 
     ListItem selectedItem = ListBox1.SelectedItem; 
     if(selectedItem == null) 
      break; 

     selectedItem.Selected = false; 
     ListBox2.Items.Add(selectedItem); 
     ListBox1.Items.Remove(selectedItem); 
    } 
} 

现在,您可以将max移动到类定义中,然后根据需要对其进行操作。

0

你想如何处理代码隐藏?如果你想这样,当下拉列表设置为1的最大一个选择的项目被复制,你可以做这样的事情:

protected void MoveRight(object sender, EventArgs e) 
{ 
    int max = Convert.ToInt32(DropDownList1.SelectedValue); 
    for(int i=0;i<max && ListBox1.Items.Count > 0 && ListBox1.SelectedItem != null; i++) 
    { 
     ListItem selectedItem = ListBox1.SelectedItem; 
     selectedItem.Selected = false; 
     ListBox2.Items.Add(selectedItem); 
     ListBox1.Items.Remove(selectedItem); 
    } 

}

或者,如果您想在ListBox1选择2项情况时,下拉列表设置为1是一个验证错误,你可以写一个处理程序ServerValidate事件CustomValidator的:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs e) 
{ 
    // There's probably a simpler way to get a count of items selected 
    e.IsValid = ListBox1.Items.Count(li=> li.Selected) <= Convert.ToInt32(DropDownList1.SelectedValue); 
} 

或者,如果你想发生在客户端,哟你必须写一些JavaScript。