Динамические элементы управления теряются во время обратной передачи внутри GridView в asp.net C # - PullRequest
0 голосов
/ 13 октября 2018

Я сталкиваюсь с очень распространенной проблемой, и я попробовал почти каждое решение, но ни одно из них не решило мою проблему.Я создал Grid View и хочу, чтобы он имел динамические столбцы.Четыре столбца среди них должны иметь некоторые элементы управления (текстовое поле, метка и флажок), поэтому я создал его как поля шаблона (ниже кода)

       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);

Затем я создал поля Bound, которые отображают результат запроса к базе данных (код ниже)

 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 и сохранить их постоянство.

Спасибо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...