2011-01-21 67 views
2

我有一個項目模板一個GridView等被定義:ASP.NET文本框忽略更新面板

 UpdatePanel updatePanel = new UpdatePanel(); 
     updatePanel.UpdateMode = UpdatePanelUpdateMode.Conditional; 

的TextChanged事件:

​​

GridView控件是UpdatePanel的裏面等被定義GridView中的文本框會觸發頁面的完整刷新。我的理解是,通過將文本框包裝到UpdatePanel中,它會觸發部分刷新。我誤解了這個嗎?

我已經連接到文本框一些javascript:

響應有關這個問題的最新評論更新

   currentTextBox.Attributes.Add("onFocus", String.Format("document.getElementById('RowTextBox').value = {0}; document.getElementById('ColTextBox').value = {1}; this.style.backgroundColor='#ffeb9c';", i, j)); 
       currentTextBox.Attributes.Add("onBlur", "this.style.backgroundColor='#ffffff'"); 

它只是設置文本框的顏色並保存它是在網格視圖。 updatepanel按照預期的方式工作,其中包含菜單和按鈕,它只是導致完整回發的文本框。

+0

不,你不會誤解它只會觸發部分回傳......但整個頁面生命週期仍然適用。什麼樣的行爲不像你期望的那樣工作? – David 2011-01-21 00:42:56

+0

是否有任何理由不是在標記中而是在代碼中聲明的? – David 2011-01-21 00:44:03

回答

0

好可惜我從來沒有能夠讓模型這裏描述的工作。相反,我把一個不可見的按鈕放在updatepanel裏面,並在javascript事件上點擊了文本框。我不知道爲什麼這種方法有效,而TextChanged沒有,但這就是它最終導致下降的原因。

0

見狀更新代碼,我已經修改了我的答案...

UpdatePanel的需要告訴它控制它應該響應。您可以通過添加觸發器來完成此操作。在你的情況下,你在GridView中有TextBox控件。這些文本框設置爲autopostback。由於它們在GridView中,我相信GridView將它們當作RowCommand對待。使用你的原代碼,我建議你添加如下內容:

UpdatePanel updatePanel = new UpdatePanel(); 
updatePanel.UpdateMode = UpdatePanelUpdateMode.Conditional; 

gridView.OnRowCommand = "GridViewRowCommand"; 

AsyncPostbackTrigger newTrigger = new AsyncPostbackTrigger(); 
newTrigger.ControlID = gridView.ControlID; 
updatePanel.Triggers.Add(newTrigger); 

在你的代碼隱藏,你需要做這樣的事情:

protected void GridViewRowCommand(object sender, RowCommandEventArgs e) 
{ 
    var myTextBox = e.Row.FindControl("myTextBoxID"); 
    // Do some work 
}