2011-11-03 30 views
0

我不確定我的問題的標題是否與我的問題的內容同步。重新排列通用列表中的號碼

我有一個下拉列表,數據源是列表List<int>數字; 在刪除按鈕上單擊下拉列表中的數字將被刪除,然後在添加按鈕上單擊數字將添加到下拉列表中。

現在,如果我的下拉列表中有1,2,3,並且如果我刪除了1,我想將數字2和3替換爲1和2.我不知道如何執行此操作。有人可以幫幫我嗎?

if(!IsPostBack) 
    { 
    List<int> numbers = new List<int>(); 
      Session["data"] = numbers; 
     rest of other code.... 
    } 

    protected void btnAddDetail_Click(object sender, EventArgs e) 
    { 
     numbers = (List<int>)Session["data"]; 
     if (numbers == null) { numbers = new List<int>(); } 
     if (numbers.Count!=0) 
     { 
      int max = numbers.Max(); 
      numbers.Add(max + 1); 
      drpdown1.DataSource = numbers; 
      drpdown1.DataBind(); 
      drpdown1.SelectedValue = numbers.Max().ToString(); 
      Session["data"] = numbers; 

     } 
     } 
    protected void btnDelete(object sender, EventArgs e) 
    { 
     numbers = (List<int>)Session["data"]; 
     int detailIndex = numbers.FindIndex(c => c == Convert.ToInt32  (deleteNo)); 
     numbers.RemoveAt(detailIndex); 
     drpdown1.DataSource = numbers; 
     drpdown1.DataBind(); 
     Session["data"] = numbers; 
     } 

現在,當我重新綁定下拉列表我想要的號碼2和3 1更換和2

+0

列表編號是什麼類型的對象? – Patrick

+0

你可以修改列表,刪除3並重新綁定下拉列表? – atbebtg

+0

我已編輯我的代碼 – Janet

回答

0

如果我明白你正在嘗試做的,請嘗試使用索引陣列:

把這兩個控件在aspx頁面:

<asp:DropDownList ID="ddlNumbers" runat="server" /> 
<asp:Button id="btnRemove" runat="server" /> 

把這個代碼在你的代碼隱藏:

public ArrayList Numbers 
{ 
    get 
    { 
     return (ArrayList)this.ViewState["Numbers"]; 
    } 
    set 
    { 
     this.ViewState["Numbers"] = value; 
    } 
} 

protected override void OnInit(EventArgs e) 
{ 
    this.btnRemove.Click += new EventHandler(btnRemove_Click); 
    base.OnInit(e); 
} 

void btnRemove_Click(object sender, EventArgs e) 
{ 
    this.Numbers.RemoveAt(Convert.ToInt32(this.ddlNumbers.SelectedValue)); 
    this.BindList(); 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     this.Numbers = new ArrayList(); 
     for (int i = 0; i < 10; i++) 
     { 
      this.Numbers.Add(i); 
     } 
     this.BindList(); 
    } 
} 

private void BindList() 
{ 
    this.ddlNumbers.Items.Clear(); 
    for (int i = 0; i < this.Numbers.Count; i++) 
    { 
     this.ddlNumbers.Items.Add((i + 1).ToString()); 
    } 
}