有几个问题:
您使用的语法不适用于 ASP.NET 控件。这是 ASP.NET 的限制,与 Ext.NET 无关。
这不是有效的 ASP.NET 语法:
PropertyName="foo foo <%=MyVariable%>"
而且,这不是有效的 ASP.NET 语法:
PropertyName="<%=MyVariable%>"
要将值传递给属性,您需要使用<%# %>
DataBinding 语法。
虽然,这也不是有效的 ASP.NET 语法:
PropertyName="foo foo <%# MyVariable %>"
该属性必须只包含数据绑定变量/脚本,例如
PropertyName="<%# MyVariable%>"
并且...您必须在控件上调用 .DataBind(),例如
this.MyControl1.DataBind();
或者,使用 Ext.NET 控件,您可以设置.AutoDataBind="true"
属性,DataBinding 将自动为您处理,例如
<ext:TextField runat="server" PropertyName="<%# MyVariable%>" AutoDataBind="true" />
上面的自定义属性自动序列化为 JavaScript,现在可供该控件(和其他)的客户端实例使用。然后,您可以从其他 JavaScript 代码调用该属性。
对于您的场景,我建议您利用<AfterRender>
监听器<ext:MultiCombo>
来获取属性值并设置其他内容。以下示例演示了完整的场景 ( myVar
),还演示了另一种基本技术 ( myVar2
),用于将 JavaScript 变量从服务器端传递到客户端。
例子
<%@ Page Language="C#" %>
<%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %>
<script runat="server">
string myVar;
string myVar2;
protected void Page_Load(object sender, EventArgs e)
{
myVar = "Label 1";
myVar2 = "Label 2";
}
</script>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Ext.NET Example</title>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<ext:TextField
ID="TextField1"
runat="server"
MyVar="<%# myVar %>"
AutoDataBind="true"
FieldLabel="Testing">
<Listeners>
<AfterRender Handler="this.setFieldLabel(this.myVar);" />
</Listeners>
</ext:TextField>
<ext:TextField
ID="TextField2"
runat="server"
MyVar="<%# myVar2 %>"
AutoDataBind="true"
FieldLabel="Testing">
<Listeners>
<AfterRender Handler="this.setFieldLabel(myVar2);" />
</Listeners>
</ext:TextField>
<script type="text/javascript">
var myVar2 = "<%= myVar2 %>";
</script>
</form>
</body>
</html>
您应该能够调整上述内容以使用您的自定义控件。
希望这可以帮助。