2017-01-14 3 views
-1

Я хочу связать столбец gridview от значения текстового поля, например: у меня есть два текстовых поля и кнопка, что я точно хочу, чтобы я дал ввод в двух текстовых окнах, и когда я нажал , значения текстового поля будут отображаться в gridview и будут делать это несколько раз, не заменяя прежние значения.bind asp.net gridview column form значение текстового поля динамически

я нашел так много соответствующего ответа, но все они сделаны с жестким кодом в случае нажатия кнопки

protected void Button1_Click(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Name", 
    typeof(string)), 
    new DataColumn("Age", typeof(decimal)) }); 
    dt.Rows.Add(TextBox1.Text, TextBox2.Text); 
    GridView1.DataSource = dt; 
    GridView1.DataBind() 
} 

, которые заменяют предыдущие значения, когда я вставить новые значения, но я хочу, чтобы все предыдущие значения, в которых Я застрял .thanks

+0

Это связано с тем, что вы создаете новое datatable. что вам нужно, чтобы сначала получить данные из преобразования datagrid в таблицу, а затем добавить новые строки. –

+0

, если хотите, я могу потратить некоторое время, чтобы написать код. Пожалуйста, дайте мне знать –

+0

Привет, я попытался написать код, пожалуйста, попробуйте. Если это поможет, пожалуйста, отметьте это как ответ, пожалуйста –

ответ

0

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

protected void Button1_Click(object sender, EventArgs e) 
{ 
    DataTable dt; 

    //check if the datatable already exists in the viewstate, if not create a new datatable 
    if (ViewState["myTable"] == null) 
    { 
     dt = new DataTable(); 
     dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Name", typeof(string)), new DataColumn("Age", typeof(decimal)) }); 
    } 
    else 
    { 
     //correct viewstate exists, cast back to a datatable 
     dt = ViewState["myTable"] as DataTable; 
    } 

    //add the new values 
    dt.Rows.Add(TextBox1.Text, Convert.ToDecimal(TextBox2.Text)); 

    //bind the datatable to the gridview 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 

    //save the datatable into the viewstate 
    ViewState["myTable"] = dt; 

    //clear the textboxes 
    TextBox1.Text = ""; 
    TextBox2.Text = ""; 
} 
1

этот код поможет вам получить текущие данные из gridview в datatable , а затем вы можете добавить новые строки соответственно.

protected void Button1_Click(object sender, EventArgs e) 
    { 
    DataTable dt =GetGridData(); 
    dr = dt.NewRow(); 
    dt.Rows.Add(TextBox1.Text, TextBox2.Text); 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
    } 

    private DataTable GetGridData() 
    { 
    DataTable _datatable = new DataTable(); 
    for (int i = 0; i < grdReport.Columns.Count; i++) 
    { 
    _datatable.Columns.Add(grdReport.Columns[i].ToString()); 
    } 
foreach (GridViewRow row in grdReport.Rows) 
{ 
    DataRow dr = _datatable.NewRow(); 
    for (int j = 0; j < grdReport.Columns.Count; j++) 
    { 
     if (!row.Cells[j].Text.Equals("&nbsp;")) 
      dr[grdReport.Columns[j].ToString()] = row.Cells[j].Text; 
    } 

    _datatable.Rows.Add(dr); 
    } 
return _dataTable; 
} 
Смежные вопросы