簡體   English   中英

asp.net中的動態下拉列表

[英]dynamic dropdownlist in asp.net

我在運行時單擊一個按鈕時創建了dropdownlist。我選擇了另一個按鈕從動態下拉列表中獲取所選文本。當我嘗試從下拉列表中檢索所選文本時,它會給我一個名為object reference not error的錯誤,以下是我的代碼。

TableRow tr;
    TableCell tc;
    DropDownList dp;
    TextBox txt;
    protected void Button1_Click(object sender, EventArgs e)
    {

        int no = int.Parse(TextBox1.Text);
        for (int i = 0; i < no; i++)
        {
            tr = new TableRow();
            tr.BorderStyle = BorderStyle.Groove;
            for (int j = 0; j < 1; j++)
            {
                tc = new TableCell();
                tc.BorderStyle = BorderStyle.Groove;
                dp = new DropDownList();
                //form1.Controls.Add(dp);
                txt = new TextBox();
                dp.Items.Add("hello");
                tc.Controls.Add(dp);
                tc.Controls.Add(txt);
                tr.Cells.Add(tc);
            }

            Table1.Rows.Add(tr);

        }
    }
    protected void Button2_Click(object sender, EventArgs e)
    {

        TextBox1.Text =((DropDownList)this.FindControl("dp")).SelectedItem.Text;


    }

你不能這樣做。 請記住,在每個請求中,您都會獲得一個新的頁面對象,以及其中所有控件的副本。 您動態添加的任何控件必須每次都以相同的方式添加,否則它將不存在。

在這種情況下,單擊按鈕時添加一次。 單擊button2時,將生成一個請求,並創建一個不再具有下拉列表的新頁面對象,因為它僅在button1處理程序中添加。

最簡單的方法是將您的下拉列表正常添加到頁面中,但只需將Visible設置為false即可。 然后,當他們單擊按鈕1時,將Visible設置為true。 這將確保您的下拉列表始終存在。

動態控件很棘手,應該盡可能避免,特別是如果你是ASP.Net的新手。

實際上,我能夠使它工作..

我在創建表之前創建了一個數據集,然后:

   tc = new TableCell();
   dd= new DropDownList();
   ddl.ID = dd1;

   foreach (DataRow dr in dst.Tables[0].Rows)
   {
      ddl.Items.Add(new ListItem(dr["Text"].ToString(),dr["Value"].ToString()));
   }
   tcActions.Controls.Add(ddlActions);

我不是專家或任何東西,我只是啄它,直到我做它我想做的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM