簡體   English   中英

從textbox.text插入gridview

[英]insert into gridview from textbox.text

我有一個gridview控件,我想向文本框輸入一個值,然后單擊按鈕,以便它將textbox.text中的一個值插入到gridview中。 我使用以下代碼:

    <asp:TextBox ID="txtName" runat="server" ViewStateMode="Enabled"></asp:TextBox>
    <br />
    <asp:Button ID="btnAddName" runat="server" Text="Button" 
        onclick="btnAddName_Click" />
    <br />
    <br />
    <asp:GridView ID="gvName" runat="server" ViewStateMode="Enabled">
    <Columns>
    <asp:TemplateField>
    <ItemTemplate>
    <asp:Label ID="lblName" runat="server"></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>

和:

protected void btnAddName_Click(object sender, EventArgs e)
    {

        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("lblName", typeof(string)));
        DataRow _dr = dt.NewRow();
        _dr["lblName"] = txtName.Text;
        dt.Rows.Add(_dr);

        gvName.DataSource = dt;
        gvName.DataBind();
    }

我在文本框中輸入文本,然后單擊按鈕以在gridview中插入一個值。 它可以正常工作,但是在第二步中,頁面回發后,它在gridview中丟失了先前的數據。

我不想在gridview中丟失先前的數據。 請幫我。

您需要向綁定到GridView原始源添加行。 如果您每次單擊按鈕創建新表並將其綁定到gridview ,它將顯示來自新DataTable和舊數據的數據。

嘗試這個

  protected void btnAddName_Click(object sender, EventArgs e)
  {
    DataTable dt;
    if(Session["dt"] == null)
    {
        dt = new DataTable();
        dt.Columns.Add(new DataColumn("lblName", typeof(string)));
    }
    else
    {
        dt = (DataTable)Session["dt"];
    }

    DataRow _dr = dt.NewRow();
    _dr["lblName"] = txtName.Text;
    dt.Rows.Add(_dr);

    gvName.DataSource = dt;
    gvName.DataBind();

    Session["dt"] = dt; 
   //store dt in session so that you can reuse it again after postback
 }

如果頁面處於回發模式,您是否正在簽入Page_Load方法?

if(IsPostBack) { //Load the data for the first time }

如果沒有,您的原始數據和“舊”數據將被綁定到gridview。

更新:要重用舊數據,請將數據表存儲在會話變量中,然后從那里加載它,添加新行並再次綁定數據數據表。

暫無
暫無

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

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