簡體   English   中英

在asp.net C#中的GridView中,動態控件在回發期間丟失了

[英]Dynamic Controls gets lost durig Postback inside GridView in asp.net C#

我面臨一個非常常見的問題,我嘗試了幾乎所有解決方案,但沒有一個解決了我的問題。 我創建了一個網格視圖,我希望它具有動態列。 其中四列必須有一些控件(文本框、標簽和復選框),所以我將它創建為模板字段(下面的代碼)

       TemplateField tf4 = new TemplateField();
        tf4.HeaderText = "Sr.No";
        CustomerBillingGrid.Columns.Add(tf4);

        TemplateField tf1 = new TemplateField();
        tf1.HeaderText = "Select";
        CustomerBillingGrid.Columns.Add(tf1);

        TemplateField tf2 = new TemplateField();
        tf2.HeaderText = "Misc";
        CustomerBillingGrid.Columns.Add(tf2);

        TemplateField tf3 = new TemplateField();
        tf3.HeaderText = "Total";
        CustomerBillingGrid.Columns.Add(tf3);

然后我創建了顯示數據庫查詢結果的綁定字段(下面的代碼)

 if (ds.Tables[0].Rows.Count > 0)
        {
            int num = 2;
            foreach (DataColumn col in ds.Tables[0].Columns)
            {
                BoundField bf = new BoundField();
                bf.HeaderText = col.ColumnName;
                bf.DataField = col.ColumnName;
                CustomerBillingGrid.Columns.Insert(num, bf);
                num++;
            }

            CustomerBillingGrid.DataSource = ds;
            CustomerBillingGrid.DataBind();

        }

之后,我為 GridView 動態生成了控件。

 protected void GenrateDynamicControls()
    {
        Label lblSNo = new Label();
        lblSNo.ID = "lblSNo";
        lblSNo.Text = "1";
        Page.Form.Controls.Add(lblSNo);

        CheckBox chkSelect = new CheckBox();
        chkSelect.ID = "chkSelect";
        chkSelect.AutoPostBack = true;
        Page.Form.Controls.Add(chkSelect);

        TextBox txtMisc = new TextBox();
        txtMisc.ID = "txtMisc";
        Page.Form.Controls.Add(txtMisc);

        TextBox txtTotal = new TextBox();
        txtTotal.ID = "txtTotal";
        Page.Form.Controls.Add(txtTotal);

    }

我在每次回發時都調用了這個方法

 if (!IsPostBack)
        {


            if (!Convert.ToBoolean(ViewState["DynamicControlsGenrated"]))
            {
                GenrateDynamicControls();
            }

        }

我面臨的問題是所有這些動態控件在每次回發時都會丟失,第二個問題是如何在 GridView 中添加這些動態生成的控件並保持其持久性。

謝謝,

在網格視圖內創建動態控件的情況下,您需要在每次回發時重新創建控件,並確保在網格視圖中禁用視圖狀態模式。

ViewStateMode="Disabled"

暫無
暫無

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

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