2017-10-20 92 views
1

我得到了我奇怪的情況。 這是我的GridView的ASCX代碼的一部分GridView onRowUpdating事件訪問textBox

<asp:gridview ID="grdBooks" class="grdBooks" runat="server" width="100%" DataKeyNames="RecId,RefAuthorsRecId,RefBooksTypeRecId" autogeneratecolumns="false" onDataBound="grdBooks_dataBound" onPreRender="grdBooks_preRender" onrowediting="grdBooks_RowEdit" onrowupdating="grbBooks_onRowUpdating" onrowupdated="grdBooks_onUpdated" autogenerateeditbutton="true" onrowcancelingedit="grdBooks_onCancelingEdit"> 
      <Columns> 
       <asp:TemplateField HeaderText="Title"> 
        <EditItemTemplate> 
         <asp:TextBox ID="txtgrdTitle" runat="server" width="200px"></asp:TextBox> 
         <asp:Label ID="lblgrdTitle2" runat="server" visible="false" Text='<%# Eval("Title") %>'></asp:Label> 
        </EditItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="lblgrdTitle" runat="server" Text='<%# Bind("Title") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField>..... 

這是 「onRowEdit」 和 「onRowUpdating」

protected void grdBooks_RowEdit(object sender, GridViewEditEventArgs e) 
{ 
    grdBooks.EditIndex = e.NewEditIndex; 
    grdBooks.DataSource = book; 
    grdBooks.DataBind(); 
    TextBox txtTitle = grdBooks.Rows[e.NewEditIndex].FindControl("txtgrdTitle") as TextBox; 
    Label lblTitle = grdBooks.Rows[e.NewEditIndex].FindControl("lblgrdTitle") as Label; 
    txtTitle.Text = lblTitle.Text; 
} 
protected void grbBooks_onRowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    TextBox txtTitle = grdBooks.Rows[e.RowIndex].FindControl("txtgrdTitle") as TextBox; 
    .... 
} 

的問題是一部分:

  • 的rowEdit工作正常,在可編輯的文本框中更改網格的所有行。問題是我在文本框中寫了一些東西,當我按下「更新」並進入「onRowUpdate」方法時,我沒有在已初始化的文本框對象中插入新文本(我已插入)。我得到了舊的。

(如u現在看到我用攜帶原題的價值editTemplate一個不可見的標籤。以前我在文本框中的文字了的eval(「標題」),但我認爲這是PROBL所以我嘗試這種方式)

+0

使用'e.NewValues'字典 –

回答

0

由於您的數據源是book.Get數據表的currentrow並更新該行中的值,然後再次綁定網格。

GridViewRow gridEditRow = this.grdBooks.Rows[e.RowIndex]; 
DataRow CurentRow = book.Rows[gridEditRow.DataItemIndex]; 

CurentRow["Title"] = (gridEditRow.FindControl("txtgrdTitle") as TextBox).Text; 
+0

問題不在於填充dt。是我無法回顧我寫入文本框中的文本。 .Text的值始終爲「」(空)。這是我的例子,也是你的代碼,所以findControl在確切的行中 –