2013-02-04 50 views
0

在我的項目中,我有一個datarepeater,在一個updatepanel中,用一個linkbutton。當用戶單擊鏈接按鈕時,會發生部分回貼並更改鏈接按鈕的文本屬性。問題是:當用戶再次單擊相同的按鈕時,即使我可以在網頁上實際看到新的文本值,但當調試器擊中事件時,發件人對象表示文本值是舊值,而不是最後一個值更新。有人知道爲什麼下面是代碼:當改變linkbutton文字時奇怪的行爲

<asp:LinkButton runat="server" ID="lbEdit" Text="Edit" EnableViewState="true" OnClick="edit_click" CommandArgument='<%# Eval("user.networkId") %>'></asp:LinkButton> 

代碼隱藏:

Protected Sub edit_click(ByVal sender As Object, ByVal e As EventArgs) 
    Dim btn As LinkButton = CType(sender, LinkButton) 
    Dim userId As String = btn.CommandArgument 
    If (btn.Text = "Edit") Then 
     btn.Text = "Save" 
    else 
     btn.Text = "Edit" 
    end if 
    end sub 
+1

要進行測試,如果你註釋掉更新面板,並讓頁面做了充分的回傳,你有同樣的問題? –

+0

Brian,是的,即使我沒有使用更新面板,問題仍然存在 – jason

回答

0

最有可能你重新綁定在回傳數據,因此它被重置價值。然後按鈕點擊事件觸發,所以是的,你正確設置Text。但是當您再次回發時,文本正在重置。

環繞你DataBind事件在If Not IsPostBack

If Not IsPostBack 
    'Bind your datasource 
End If 
+0

感謝您的迴應Mike。你的意思是我的數據綁定中繼器?問題是,因爲我正在使用更新面板,所以即使它是(而且會是)回發,我仍想繼續進行綁定。 – jason

+0

@jason是的,爲你的中繼。如果你添加上面的代碼,你有什麼問題?在大多數情況下,您不需要在回發時重新綁定數據。 – MikeSmithDev

+0

Mike,此用戶控件中的大多數操作都會導致更新面板觸發(導致部分回發)。例如,我的數據中繼器有行和列(一個表)。當用戶點擊列標題時,我在回發中對中繼器進行排序並重新綁定到中繼器。如果我只在回發時綁定,我將無法做到這一點。 – jason