2009-09-01 71 views
0

我正在爲一個問題苦苦掙扎,我只能找到一個解決方案。asp.net 2.0:使用jquery更新formview

首先,我不能使用asp.net AJAX或任何其他標準asp.net 2.0作爲服務器管理員不會安裝任何其他東西。

所以,這就是我所要做的。 (對於好奇,跳到下面的大膽問題)

我的頁面由幾個部分組成,其中的每一個得到由jquery.load(URL)加載。其中一個頁面部分被一個包含表單視圖的aspx填充。由於我不想回發,我只需點擊一個常規html按鈕即可切換到表單視圖的EditTemplate,該按鈕提交一個參數,指示aspx頁面切換到編輯模式,例如,

Page_Load(...) 
{ 
    if(Request.Params["SwitchEditMode"]) SwitchEditMode(); 
} 

這完美的作品!現在,這裏是我卡住的部分。 EditTemplate中的元素基於從數據庫視圖中選擇的元素,並綁定到<%# Bind("xx")的字段。然後我有一個html按鈕(沒有asp控件),它提交一個參數給aspx頁面,告訴它調用DataSource更新方法。在dataSource_updating方法中,我查找包含要保存的值的控件。但是,當我切換到編輯視圖時,這些值始終是相同的。我保留的文本框或下拉列表中沒有任何更改。

長話短說,如何將EditTemplate中的值保存回jquery的數據庫?

到目前爲止,我嘗試了幾個方案,但沒有成功。

  1. 在更新()方法中,查找FindControl的控件並設置e.Command.Parameter["xyz"] = foundcontrol.SelectedValue;。值始終與開始時相同。

  2. 設置<asp:parameter name="SampleValue" />並在EditTemplate中<asp:TextBox Value='<%# Bind("SampleValue")#>這些值始終爲空。

  3. 通過javascript設置一個帶有選定值的隱藏輸入字段。這不起作用作爲內EditTemplate控制是開關進入編輯模式

所以也許我完全錯了我的想法,標題變成一個完全錯誤的方向,這可以實現更容易後纔可見,但到現在爲止我不知道如何實現這一點。我可以做到沒有Ajax,但爲了用戶體驗,我更喜歡jQuery版本。

對於所有已經閱讀了這一點,並沒有感到困惑:-),感謝您的努力!

最好的問候,

安德烈亞斯

+0

我忘了。某些編輯項目由另一個DataSource中的DropDowns填充,並且值應該寫入另一個數據庫表中,而不是數據源自的視圖。 –

回答

0

如果加載兩個FormView控件的「模式」到同一頁面上,使用AJAX,你可能會得到重複的字段名。其中一個包含正在保存的未更改的值。 ASP.NET如何知道它們的區別?你只需要提交EditTemplate中的那個,這需要一個單獨的表單(或者其他一些黑客)。

或者您的HTML提交按鈕不提供ASP。NET它需要重新填充控件。你是否在FormView中使用ViewState?

總而言之,這聽起來像是一個多毛的技術組合......正如你所知道的。

1

我會忘記使用表單視圖,只是使用常規的HTML格式與常規輸入控件。從您的Web服務中返回一個包含所有值的對象,並使用ajax填充控件,然後使用ajax進行提交。或者完全使用asp.net或完全使用asmx後端的html/jquery。否則,它太混亂了。