一個困擾兩天的建立動態控制項的問題

來源:互聯網
上載者:User

本以為可以用下面的方法動態建立對象,並且提取控制項的值:

 //增加序號顯示
    protected void addPSlabel(int begini,int endi, string panels)
    {
        Panel pl;
        int j = 0;
        pl = (Panel)this.FindControl(panels);
        //pl.Controls.Clear();
        pl.Controls.Add(new LiteralControl("<table width=100%><tr>"));
        for (int i = begini; i <= endi; i++)
        {
            Label lb = new Label();
            lb.ID = "LabelPS" + i.ToString();

            if (j != 0 && j % 3 == 0)
            {
                pl.Controls.Add(new LiteralControl("</tr><tr>"));

            }
            pl.Controls.Add(new LiteralControl("<td>"));
            pl.Controls.Add(lb);
            pl.Controls.Add(new LiteralControl("</td>"));
            if (j != 0 && j % 5 == 0)
            {
                pl.Controls.Add(new LiteralControl("</tr><tr>"));
                j = -1;
            }
            j = j + 1;
        }
        pl.Controls.Add(new LiteralControl("</tr></table>"));
    }

這個是增加的方法

然後在資料繫結時建立並賦值,瀏覽時可以看到沒有問題 能夠看到值了

但是問題出現了 要再次點擊時提交頁面時 用下面的方法 提取控制項的值 老是出現對象沒有初始化

  string lbName;
            Label lb;
            Panel pl = (Panel)this.FindControl("Panel1");
            DataRow row = dt.NewRow();
            for (int i = 0; i <= icount - 1; i++)
            {
                ij = i + 1;
                lbName="LabelPS"+ij.ToString();
                lb = (Label)pl.FindControl(lbName);
                row[i] = lb.Text.Trim();
            }

後來查看網頁的源檔案,也有那個ID的控制項啊 。。。思考了很久,難道是PR值太低

經過詳細的思考 後來才發現 原來是 頁面提交後 page load了一次 那些動態建立的控制項是不能使用了的 所以要在頁面重新載入時再次建立一次

 try
        {
            int sumcount =int.Parse(Session["conCount"].ToString());
            if (sumcount > 0)
            {
                addPSlabel(1, sumcount, "Panel1");
            }
        }
        catch (Exception)
        { }

以上是本人的一次一次小總結 希望能給朋友拋磚引玉之功效!少走彎路。。。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.