簡體   English   中英

動態綁定asp.net gridview列表單文本框值

[英]bind asp.net gridview column form textbox value dynamically

我想從文本框值綁定 gridview 列,例如:我有兩個文本框和一個按鈕,我完全想要我將在兩個文本框中輸入,當我單擊按鈕時,文本框值將顯示在 gridviw 中並想要這樣做多次而不替換以前的值。

我找到了很多相關的答案,但都是在按鈕點擊事件中使用硬代碼完成的

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()
}

當我插入新值時替換以前的值,但我想保留我卡住的所有以前的值。謝謝

此代碼將幫助您將當前數據從 gridview 獲取到數據表,然后您可以相應地附加新行。

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

您可以將每個PostBack的值存儲到 Session 或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 = "";
}

暫無
暫無

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

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