簡體   English   中英

Asp.net控制回發后不更新

[英]Asp.net controls not updating after a postback

我正在編寫代碼來從asp控件讀取數據以更新數據庫中的記錄。 我已經在最后一天進行了調試,我已將其追溯到之前我應該​​注意到的事情。

代碼首先使用數據庫中的現有值填充控件。 當我單擊SAVE時 ,它應該從控件中讀取當前值並保存。 不幸的是,它實際上正在做的是在對它們進行更改之前使用控件的值。 它沒有看到控件的變化。

這是一個示例:

<asp:TextBox ID="OtherCourseName_5" runat="server"></asp:TextBox>

這是btnSave_onClick()函數中相應的后面代碼:

int object_number=5;

string other_course_name_string
    = "OtherCourseName_" + object_number.ToString().Trim();

TextBox ocn = utilities
   .utils
   .FindControlRecursive(this.Master, other_course_name_string) as TextBox;

我正在使用我在網絡上找到的FindControlRecursive() 我確定它有效,但為了以防萬一,我試圖直接將控件作為OtherCourseName_5.Text來解決。 即使我只是在OtherCourseName_5.Text顯示該值,它OtherCourseName_5.Text給出原始值。

我使用同一頁面輸入新數據和編輯數據。 輸入數據時它工作正常。 也就是說,它正確地看到TextBox控件已從空變為擁有數據。 它只在我調用頁面上的編輯功能時(通過傳遞edit=true )。 我通過添加switch edit=true作為查詢字符串來調用它(程序正確地讀取該開關,到達適當的代碼區域,打印出所有正確的值 - 除了控件的內容!)。

該頁面太復雜,無法發布整個內容。 我試圖傳達必要的細節。 完全有可能我做了一個簡單的編碼錯誤,但似乎更有可能我從根本上誤解了頁面的處理方式。

是否有任何已知的東西可以使控件的價值看起來好像沒有改變?

注1 :我想也許在輸入數據后我不得不去另一個領域,但我試過了,這仍然是一個問題。

注意2 :我正在使用TextBoxDropDownList控件,並且兩者都有相同的問題。

注意3 :這些控件位於面板上,頁面使用的是SiteMaster 我沒有遇到任何問題,也不認為問題存在,但我現在要質疑物理定律。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        //populate controls with data from database
    }
}

在評估回發處理程序之前執行回發時,將引發PageLoad事件

因此,如果您不避免重新綁定控件,則會加載數據庫中的值。 然后回發事件將它們保存到db

Asp.net頁面生命周期 在此輸入圖像描述
(來源: microsoft.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM