2012-11-20 104 views
5

我只是測試如果在沒有運氣的情況下進行更新時,我會從文本框中獲取已更改的值。我只是不能獲得新的價值。我究竟做錯了什麼?我嘗試了很多東西。這是最新的一個。我怎樣才能獲得更新的新值到我的標籤?當我單擊網格上的編輯並更改文本框的值並單擊更新時,標籤將僅顯示文本框的原始值。GridView RowUpdating無法獲取新值

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    GridView1.EditIndex = e.NewEditIndex; 

    bindgrid(); 
} 

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow row = GridView1.Rows[e.RowIndex]; 
    Label1.Text = ((TextBox)(GridView1.Rows[GridView1.EditIndex]).Cells[2].Controls[0]).Text; 

    GridView1.EditIndex = -1; 
    bindgrid(); 
} 
+0

你有沒有調試代碼,在Label1中獲得什麼值? –

+0

它在那裏讀取......「當我單擊網格上的編輯並更改文本框的值並單擊更新時,標籤將只顯示文本框的原始值。」因此,讓我們說原來在文本框中有「測試」,然後我編輯它以「asd」,然後單擊更新。 「測試」將出現在標籤不「asd」,因爲我想。 – Firze

+0

您必須將值保存在數據庫中,並再次將網格綁定到新的數據源 –

回答

16

我認爲當你推送更新鏈接時Gridview在獲取新值之前再次綁定。您必須在GridView.DataBind()之前使用if(!IsPostBack)

+0

哦,是的,這是它。當我看到你的回覆時,我立即意識到這是事實。這是在你提到它之前我甚至沒有想到的那些問題之一。 – Firze

0

爲什麼當你已經有當前行時再次打電話GridView1.Rows[GridView1.EditIndex]?嘗試使用行你已經檢索

GridViewRow row = GridView1.Rows[e.RowIndex]; 
Label1.Text = ((TextBox) row.Cells[2].Controls[0]).Text; 

Read more on this

0

剛剛成立的EnableViewState屬性設置爲false的GridView的,你可以得到新的價值。

<asp:GridView runat="server" EnableViewState="False" ID="GridView6" AutoGenerateColumns="false" Width="100%" 
       EmptyDataText="No Record Found" AllowPaging="false" PageSize="10" OnPageIndexChanging="ChangePage" 
       OnRowCommand="RowCommand" OnRowDataBound="GridView6_RowDataBound" > 
+0

這看起來更像評論而不是答案。當你獲得足夠的聲望時,你將能夠對其他人發表評論。 –

+0

我已經修改了我的答案,看起來更像回答而不是評論。 –