2012-12-03 26 views
0

當我嘗試向現有網格添加新行時,我的值得到清除。使用Viewstate,我維護Datatable的頁面並綁定到網格。認爲在回發期間值正在被清除。在網格中添加新行後得到清除的值

// AddNewRow

int rowIndex = 0; 

     if (ViewState["CurrentTable"] != null) 
     { 
      DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"]; 
      DataRow drCurrentRow = null; 
      int i; 

      if (dtCurrentTable.Rows.Count > 0) 
      { 
       for (i = 1; i <= dtCurrentTable.Rows.Count; i++) 
       { 
        TextBox txtguide = (TextBox)grdreports.Rows[rowIndex].FindControl("txtAccNo"); 
    drCurrentRow = dtCurrentTable.NewRow(); 

        dtCurrentTable.Rows[i - 1]["txtAccNo"] = txtguide.Text; 
rowIndex += 1; 

       } 
       drCurrentRow = dtCurrentTable.NewRow(); 
       dtCurrentTable.Rows.Add(drCurrentRow); 
       ViewState["CurrentTable"] = dtCurrentTable; 
       ViewState["rowcount"] = dtCurrentTable.Rows.Count; 
       grdreports.DataSource = dtCurrentTable; 
       grdreports.DataBind(); 

      } 
} 

// ASPX頁面:

<asp:GridView ID="grdreports" runat="server" AutoGenerateColumns="false"> 
     <Columns> 
      <asp:TemplateField> 
       <HeaderTemplate> 
        S.No</HeaderTemplate> 
       <ItemTemplate> 
        <%#Container.DataItemIndex+1 %> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Acc.No/Tel.No"> 
       <ItemTemplate> 
        <asp:TextBox ID="txtAccNo" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "nvrGuide")%>'></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 
<asp:TemplateField HeaderText="AddNew" ShowHeader="false"> 
       <ItemTemplate> 
        <asp:LinkButton ID="lbtnAddGuide" runat="server" CommandName="Add" Text="Add New" 
         OnClick="lbtnAddGuide_OnClick"></asp:LinkButton> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Delete" ShowHeader="false"> 
       <ItemTemplate> 
        <asp:LinkButton ID="lbtnDeleteGuide" runat="server" CommandName="Delete" Text="Delete" 
         OnClick="lbtnDeleteGuide_OnClick"></asp:LinkButton> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

我在哪裏去了?

+0

您使用UpdatePanel嗎? – Blachshma

+0

你的意思是「價值觀正在被清除」?哪些值? –

+0

沒有更新面板 – iamCR

回答

1

我的猜測是代碼,名稱不同。

這意味着, 名稱

`Text='<%#DataBinder.Eval(Container.DataItem, "nvrGuide")%>'` 

在.aspx頁面中指定爲「nvrguide」但是,在頁面的.cs

TextBox txtguide = (TextBox)grdreports.Rows[rowIndex].FindControl("txtAccNo"); 

名稱是「txtAccNo 「。所以我認爲你在.cs頁面綁定爲空格的值與.aspx頁面不同。

請在兩個頁面中將其更改爲相同。

也許它應該爲此拋出一個錯誤。由於代碼不完全顯示,我不能打電話。

+0

THX。 S I犯了個小錯誤@sandy。 – iamCR

0

對於網頁提交使用後在頁面加載事件

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (IsPostBack) 
     { 

       foreach (GridViewRow row in GridView1.Rows) 
        { 
         ((TextBox)row.FindControl("txtAccNo")).Text = Request.Form[((TextBox)row.FindControl("txtAccNo")).UniqueID]; 
        } 
      } 
    } 
相關問題