簡體   English   中英

DevExpress ASPXComboBox的動態控制存在Javascript問題

[英]Dynamic control with DevExpress ASPXComboBox has Javascript problems

我對Dev Express組件(即AspxComboBox)有疑問。

我的上下文是這樣的:我想為我的一些業務實體動態生成接口。 我設計了一個用戶控件,該控件接收一些元數據,並基於該元數據,該控件向界面添加文本框,日期編輯器和組合框。 當所有這些控件以非動態方式添加到頁面時,它們就像一個超級按鈕一樣工作。 但是,當我從C#代碼中添加它們時,以下JavaScript行出現了錯誤:

document.getElementById("usercontrol_combo_I").setAttribute("autocomplete", "off");

“ usercontrol”是我正在設計的用戶控件的ID。 “ combo”是組合的ID。

錯誤是,在HTML DOM中找不到ID為(“ usercontrol_combo_I”)的元素。

我發現,如果我選擇不對組合本身使用DataBind(注釋掉對AspxComboBox實例的DataBind()方法的任何調用),則永遠不會呈現出現錯誤的JS行(在最終版本中不存在) HTML)。 但是,如果我這樣保留它,則任何后續的PostBacks都會清空組合列表(組合中沒有更多項目)。 組合的數據源是一個IList實例,該實例在每次頁面加載時分配(即使PostBack == true)。

DevExpress的支持論壇上有一篇文章報告了相同的問題,但是團隊沒有任何答案。

這里有人遇到這個問題並找到解決方法嗎?

對於ASP.NET Dev,如果要綁定Page_Load事件,則需要將所有請求都綁定回服務器,這也包括回調。

現在不支持獲取HTML元素並設置其屬性。 關閉autoComplete的唯一受支持方法是將回調發送到服務器,並在服務器端屬性上關閉autoComplete,這將更新控件。 現在,comboBox必須是執行回調或將其包裝在CallbackPanel中的組件。

您是否也在設置ASPxComboBox的ClientInstanceName?

實際上,我只是找到了一個簡單的解決方法。 如果我只是在頁面本身的page_load事件中在生成的控件上調用DataBind(),則問題就不存在了。

例如:

protected void Page_Load(object sender, EventArgs e)
    {
        base.Page_Load();
        this.control.DataBind();
    }

其中,“控件”是包含組合框的UserControl。 奇怪的是,我什至在PostBack和CallBack上也調用DataBind。

但是,嘿,它有效。

我想在使用Devexpress時,我還有很多其他事情想念。 但是,“實踐使完美”!

謝謝回復。

暫無
暫無

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

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