2013-03-25 37 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。