[英]Passing Data to client side (javascript) in post back in .ascx page
[英]Attaching JavaScript to the prototype of an ASCX client side instance
我該如何編碼我的ASCX控件,以便我可以提供一個ID並從瀏覽器運行一些JavaScript,例如
$find('myASCXControlClientId')
和返回的對象,是否具有帶有原型的類,該類帶有我的自定義javascript方法,可以在控件的所述實例上調用它?
Telerik控件(例如RadTreeView)可以執行此操作
他們使用Javascript獲取的控件具有一個原型,其中包含一些定義明確的方法。 如何使用ASCX做到這一點?
您在上面顯示的RadControl可能已實現為ScriptControl而非UserControl(具有額外的.ascx文件)。
您可能已經知道ScriptControl類完全符合您的要求,並且當您執行$find(elementid)
它會返回控件的實際javascript對象。
我討厭ScriptControl的問題是,您基本上必須通過在Load
或PreRender
期間將Table
和Label
類的.NET對象添加到控件的ChildControls
集合中,以編程方式構建控件的DOM元素。
我見過的工作之一是創建一個ScriptControl來容納您的屬性和方法,然后使用ascx UserControl對其進行包裝:
ScriptControl示例:
public class MyScriptControl : System.Web.UI.ScriptControl
{
public string MyProperty { get; set; }
protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
{
//your implementations
}
protected override IEnumerable<ScriptReference> GetScriptReferences()
{
//your implementations
}
}
UserControl示例:
public partial class MyUserControl : System.Web.UI.UserControl
{
protected override void OnLoad(EventArgs e)
{
this.MyLabel.Text = this.MySpecialScriptControl.MyProperty;
base.OnLoad(e);
}
}
.ascx示例:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Example.ascx.cs" Inherits="Example" %>
<div>
<asp:Label id="MyLabel" runat="server" />
<my:MyScriptControl id="MySpecialScriptControl" runat="server" />
</div>
這應該使您既可以控制自己的ascx標記,又可以在javascript中執行以下操作:
var myScriptControl = $find('MySpecialScriptControl');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.