2013-01-10 34 views
0

我有一個gridview控件,我想輸入一個值到一個文本框並單擊按鈕,以便它從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中的以前的數據。請幫幫我。

+0

你需要添加代碼,並檢查是否(的IsPostBack){}在Page_Load中,也許在的IsPostBack代碼塊添加代碼..嘗試的第一或添加一些會話瓦爾並加載/綁定在Page_Load事件中的gvName那裏 – MethodMan

+0

我需要回發頁,我輸入數據在多階段 –

+0

沒有回傳不是一個頁面Ahmad嘗試rs例子,看看它是否工作。 – MethodMan

回答

1

您需要將行添加到您綁定到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 
} 
+0

我無法使用GetSourceData()。請給我參考GetSourceData()。日Thnx –

0

如果頁面處於PostBack模式,您是否正在檢查Page_Load方法?

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

如果不是,您最初和「舊」的數據將綁定到gridview。

更新: 重用舊的數據,該數據表存儲在一個會話變量,從那裏加載它,添加新線和數據綁定再次DataTable中。

+0

第二步,在gridview中丟失以前的數據。由於dt是新的數據表,並使用gvName.DataSource = dt; –