[英]ASP.NET Dynamic user controls save data issue
這是我所擁有的
會話中駐留的一組業務實體(例如, Employee:{"Name":string,"Surname":string,"Salary":double, "Position":enum}
一組用戶控件( using Telerik.Web.UI
),每個用戶控件描述一個業務實體(例如EmployeeControl.ascx
:用於名稱,姓氏和薪水的RadTextBoxes和用於位置的RadComboBox。控件中還有一個RadButton ,它將在控件客戶端中輸入的數據保存到某個實體,該實體在加載控件時已經知道)。
帶有RadTabStrip
和RadMultiPage
頁面,用於在不同的選項卡中呈現不同的控件
托管我們的Employee控件的目標RadTab
。
因此, 問題是:當我按下“ Save
按鈕時,便完成了一個回發,從而清除了我的控件,並且僅在觸發Click
事件之后。 我試圖通過將RadAjaxManager與OnClientClicking
腳本一起使用來取消回發來避免這種情況,但是沒有成功,因為回發仍然生成,盡管它的__EVENTTARGET
是RadAjaxManager
本身。
基本上就是這樣:
用戶選擇帶有Employee控件的選項卡。 該控件填充了Page_Load
上的初始數據。 (回傳發生在重新創建控件時)
用戶修改數據。 (什么也沒有發生,沒有控件會產生回發)
用戶單擊保存。 (在重新創建控件時發生回發,然后觸發Click事件)
沒有數據被保存
當再次輸入數據並調用保存時,所有內容將按原樣保存。
我如何才能使其正常工作?
PS我通過將回發分為奇數和偶數(我在Session
添加了另一個名為PostCounter的變量,每次遞增)來實現所需的結果(盡管不完全:回發完成后屏幕“閃爍”)頁面已發布)。 因此,當表達式PostCounter % 2
等於0時,我通過執行__doPostback
執行另一次回發,該事件的eventTarget參數是RadAjaxManagerProxy實例的ClientID
,而參數只是與該字符串中使用的任何字符串都不匹配的字符串我的常規Ajax請求。
重新創建控件時,請確保它們始終具有相同的ID。 不需要從其他控件模仿回發,按鈕是IPostBack控件,因此一切正常。
對於Sharepoint,您需要以編程方式添加AJAX設置,這種(一種AJAX,一種完整的回發)行為是典型的: http : //www.telerik.com/forums/radajaxmanager-in-webpart-on-sharepoint-2010
另外,請確保不嵌套AJAX設置(來自管理器和/或代理),RadAjaxPanels和asp:UpdatePanels: http : //www.telerik.com/help/aspnet-ajax/ajax-controls-in-ajaxpanel-和-ajaxsettings.html 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.