2010-11-07 25 views
2

我想開發複合控件,其中一些工作將在客戶端執行。 爲此,我正在實施IScriptControl。使用客戶端功能創建複合控件

ScriptReference指向包含客戶端對象的腳本文件。

比方說,我希望它有Listview(html選擇)控件,onselect將根據選定的值運行javascript函數。

我不能只是創建動態控制是客戶端的js,因爲控制有設計模式UI,所以我必須創建在服務器端的選擇控制(我在覆蓋無效創建渲染)

我的問題如何以及在何處爲選擇分配onselect事件。

更新:
也許我應該爲屬性添加選擇的ID來ScriptControlDescriptor,然後在客戶端控制檢索該ID和所需要的處理程序附加到事件?

回答

1

使用對象的屬性集合,您可以添加您想要的onselect屬性。請致電HtmlSelect.Attributes.Add("onselect", "functionYouWantToCall();");

爲了澄清,如果在C#中服務器端的渲染期間創建HTML選擇,則上面的行用於註冊onselect客戶端事件以調用functionYouWantToCall() java腳本方法。

有許多方法可以在運行時將JavaScript函數添加到ASP.NET頁面,或者通過包含靜態JS文件。爲了這個看文檔here

在一個ASPX頁面中,一旦添加到一個頁面中,控件就可以訪問Page屬性,這將使您可以訪問Page和因此ClientScript屬性。

同樣,您可以將JS文件嵌入到DLL中,並使用ClientScript.RegisterClientScriptResource方法自動爲它們提供服務。

+0

和我應該在哪裏定義functionYouWantToCall()? – jullin 2010-11-07 17:26:29

+0

我無法直接從服務器端訪問客戶端對象(ScriptReference)。 – jullin 2010-11-07 17:40:29

+0

問題是這不是一個aspx頁面,它是一個dll控件 – jullin 2010-11-07 19:42:06

0

爲什麼不讓你的控件創建javascript並擁有控件寄存器? 這裏是我在評論中的鏈接。這就是所謂的噴吹客戶端腳本從ASP.NET服務器控件 - http://msdn.microsoft.com/en-us/library/aa478975.aspx

+0

你是什麼意思? – jullin 2010-11-07 17:28:58

+1

在控件的頁面加載(或另一個事件)中 - 我找到了你可能想要的這個例子。 http://msdn.microsoft.com/en-us/library/aa478975.aspx – Lareau 2010-11-07 18:30:34

+0

這可以工作,但它非常醜陋。我希望能得到更好的解決方案。有些東西可以使用Ajax ScriptControl – jullin 2010-11-07 20:04:13

相關問題