Динамически связывать Gridview

****Вторые значения текстовых полей, добавляющих и удаляющих первые значения в gridview...****

Код

protected void Button1_Click(object sender, EventArgs e)
    {
            DataTable dt1 = new DataTable();
            dt1.Columns.Add(new DataColumn("Name", typeof(System.String)));
            dt1.Columns.Add(new DataColumn("Age", typeof(System.String)));
            dt1.Columns.Add(new DataColumn("Gender", typeof(System.String)));
            dt1.Columns.Add(new DataColumn("Qualification", typeof(System.String)));

            DataRow dr = dt1.NewRow();
            dr["Name"] = TextBox1.Text;
            dr["Age"] = TextBox2.Text;
            dr["Gender"] = TextBox3.Text;
            dr["Qualification"] = TextBox4.Text;

            dt1.Rows.Add(dr);

            DataSet ds = new DataSet();
            ds.Tables.Add(dt1);


            GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();

            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("Name", typeof(System.String)));
            dt.Columns.Add(new DataColumn("Age", typeof(System.String)));
            dt.Columns.Add(new DataColumn("Gender", typeof(System.String)));
            dt.Columns.Add(new DataColumn("Qualification", typeof(System.String)));

            DataRow dr1 = dt1.NewRow();
            dr1["Name"] = TextBox1.Text;
            dr1["Age"] = TextBox2.Text;
            dr1["Gender"] = TextBox3.Text;
            dr1["Qualification"] = TextBox4.Text;

            dt.Rows.Add(dr1);

            DataSet ds1 = new DataSet();
            ds1.Tables.Add(dt);


            GridView1.DataSource = ds1.Tables[0];
            GridView1.DataBind();
             }

person nehan    schedule 13.10.2014    source источник


Ответы (1)


это происходит, потому что вы пишете, что это должно произойти. Если вы хотите добавить новые записи в виде сетки, то перед добавлением новых следует сохранить существующие.

В вашем случае вы добавляете первый набор таких записей

DataTable dt1 = new DataTable();
            dt1.Columns.Add(new DataColumn("Name", typeof(System.String)));
            dt1.Columns.Add(new DataColumn("Age", typeof(System.String)));
            dt1.Columns.Add(new DataColumn("Gender", typeof(System.String)));
            dt1.Columns.Add(new DataColumn("Qualification", typeof(System.String)));

            DataRow dr = dt1.NewRow();
            dr["Name"] = TextBox1.Text;
            dr["Age"] = TextBox2.Text;
            dr["Gender"] = TextBox3.Text;
            dr["Qualification"] = TextBox4.Text;

            dt1.Rows.Add(dr);

            DataSet ds = new DataSet();
            ds.Tables.Add(dt1);


            GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();

Это нормально, вы создаете некоторые данные и привязываете их к представлению сетки. И когда вы пытаетесь связать новые данные, вы снова делаете то же самое, что и

 DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("Name", typeof(System.String)));
                dt.Columns.Add(new DataColumn("Age", typeof(System.String)));
                dt.Columns.Add(new DataColumn("Gender", typeof(System.String)));
                dt.Columns.Add(new DataColumn("Qualification", typeof(System.String)));

                DataRow dr1 = dt1.NewRow();
                dr1["Name"] = TextBox1.Text;
                dr1["Age"] = TextBox2.Text;
                dr1["Gender"] = TextBox3.Text;
                dr1["Qualification"] = TextBox4.Text;

                dt.Rows.Add(dr1);

                DataSet ds1 = new DataSet();
                ds1.Tables.Add(dt);


                GridView1.DataSource = ds1.Tables[0];
                GridView1.DataBind();

Что на самом деле заменяет ваш источник данных для представления сетки, я думаю, что лучшим вариантом было бы использовать какое-то хранилище состояния просмотра для хранения значений таблицы и снова связать их с представлением сетки.

Попробуйте сделать это так-

DataTable dt1 = new DataTable();
            dt1.Columns.Add(new DataColumn("Name", typeof(System.String)));
            dt1.Columns.Add(new DataColumn("Age", typeof(System.String)));
            dt1.Columns.Add(new DataColumn("Gender", typeof(System.String)));
            dt1.Columns.Add(new DataColumn("Qualification", typeof(System.String)));

            DataRow dr = dt1.NewRow();
            dr["Name"] = TextBox1.Text;
            dr["Age"] = TextBox2.Text;
            dr["Gender"] = TextBox3.Text;
            dr["Qualification"] = TextBox4.Text;

            dt1.Rows.Add(dr);

после этого добавьте новую запись здесь в той же таблице

  DataRow dr1 = dt1.NewRow();
            dr1["Name"] = TextBox1.Text;
            dr1["Age"] = TextBox2.Text;
            dr1["Gender"] = TextBox3.Text;
            dr1["Qualification"] = TextBox4.Text;

            dt1.Rows.Add(dr1);

            DataSet ds1 = new DataSet();
            ds1.Tables.Add(dt1);


            GridView1.DataSource = ds1.Tables[0];
            GridView1.DataBind();

Это сработает для вас. Если вы добавляете данные динамически, вам следует использовать ViewState для временного хранения ds.

person Malkit Singh    schedule 13.10.2014
comment
Нет, это также не работает, когда я добавляю новую строку данных в dt - person nehan; 13.10.2014
comment
пожалуйста, проверьте мой отредактированный ответ ... теперь он должен работать: D - person Malkit Singh; 13.10.2014