Asp.net開發之旅--動態產生控制元件

iDotNetSpace發表於2010-05-31
在很多時候,我們根據實際需要,會用動態生成控制元件的方式來處理我們要顯示的內容,這樣在資料很多的時候,就不要花很多時間去建控制元件,這樣對程式設計師來說,可以節約很多時間,同時可以使自己的程式碼精煉,下面我用一個關鍵字的例子來闡述一下:

 

需求:

    我現在要在頁面上顯示一篇文章所有的關鍵字,並且點選每個關鍵字都能觸發事件,將他新增到textbox中;

 

實現:

 

        protected void keywordsBind()
        {
            string[] keywords = {"aa","bb","cc","dd"}
            foreach (string keyword in keywords)
            {

              if(keyword!=null && keyword!="")

               {

                  LinkButton lbtn = new LinkButton();//例項化LinkButton控制元件

                  lbtn.Text = keyword;
                  lbtn.Font.Size = 16;
                  lbtn.ForeColor = Color.Red;
                  lbtn.Click += new EventHandler(lbtn_Click);//新增點選事件
                  pKeyWords.Controls.Add(lbtn); //將LinkButton新增到pKeyWords(是panel控制元件)

                }
             }                 
          }

 

        //點選事件的實現

        protected void lbtn_Click(object sender, EventArgs e)
        {

            TextBox aa = (TextBox)(gvPost.Rows[0].Cells[4].FindControl("TextBox2"));
            LinkButton lb = (LinkButton)sender;
            string keywords = lb.Text;
            if (aa.Text == "")
            {
                aa.Text = keywords;
            }
            else
            aa.Text = aa.Text+","+lb.Text;
        }

 

有人或許會問,我這樣生成的控制元件,它的ID是什麼,我怎麼獲取他的ID?

對於這個問題,我的想法是認為控制的他的ID,就是用個迴圈給每個自動生成的控制元件加上ID,如下:

         protected void keywordsBind()
        {

            int Id = 1;
            string[] keywords = {"aa","bb","cc","dd"}
            foreach (string keyword in keywords)
            {

              if(keyword!=null && keyword!="")

               {

                  LinkButton lbtn = new LinkButton();

                  string lbtnId = "lbtn" + Id;

                  lbtn.Id = lbtnId; 

                  lbtn.Text = keyword;
                  lbtn.Font.Size = 16;
                  lbtn.ForeColor = Color.Red;
                  lbtn.Click += new EventHandler(lbtn_Click);
                  pKeyWords.Controls.Add(lbtn);

                  Id++;

                }
             }                 
          }

這樣就可以給每個控制元件ID賦值。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-664090/,如需轉載,請註明出處,否則將追究法律責任。

相關文章