2014-01-21 44 views
17

,所以我必須在我的網站的文本框:文字文本框的不更改代碼的背後

<asp:TextBox ID="Latitude" runat="server" ClientIDMode="Static" ></asp:TextBox> 

,並在頁面加載我填補這一文本的東西從DATABSE:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Latitude.Text = thisPlace.Latitude; 
} 

但當我想更新我與該文本框的新值DATABSE,它仍然更新了一個擺在頁面加載數據庫:

protected void Save_Click(object sender, EventArgs e) 
{ 
    setCoordinates(Latitude.Text); 
} 

這是正常的嗎?我怎樣才能確保我在setCoordinates()從文本框中獲取新值,而不是使用Latitude.Text = thisPlace.Latitude; ?

+0

你在哪兒叫'setCoordinates'? –

+0

你從哪裏調用'setCoordinates()'? – ElGavilan

回答

25

我認爲它是因爲PostBack

如果你打電話setCoordinates()某些按鈕的點擊事件文本框的新值將丟失。如果這是正確的變化Page_Load這樣一個

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     Latitude.Text = thisPlace.Latitude; 
    }  
} 
1

你需要得到來自請求的信息,而不是使用屬性那樣:

var theValue = this.Context.Request[this.myTextBox.ClientID]; 
5

Page_Load執行每次頁面加載。添加IsPostBack檢查只在第一頁加載重置文本:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Latitude.Text = thisPlace.Latitude; 
    } 
} 
4

檢查的頁面是回傳,否則價值會前被替換保存

If(!IsPostBack){ 
    Latitude.Text = thisPlace.Latitude; 
} 
9

這是因爲Page_Load事件發生的方法setCoordinates被調用之前。這意味着Latitude.Text值與以前相同。

您應該更改加載函數,以免它始終設置文本框的初始值。

通過改變page_load事件!Page.IsPostBack,給出初始值的唯一時間是原始頁面加載的第一次。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     Latitude.Text = thisPlace.Latitude; 
    } 
}