有幾個問題:
你使用不會與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%>"
and ...您必須調用。控件上的DataBind(),示例
this.MyControl1.DataBind();
或者,使用Ext.NET控件,可以設置.AutoDataBind="true"
財產和數據綁定會自動爲您處理,例如
<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>
您應該能夠適應上述與您的自定義控制工作。
希望這會有所幫助。
謝謝你的回覆傑弗裏。我有點困惑。我是否創建了一個文本框並將其傳遞給multicombo控件的工具提示? – hoakey
您可以使用您喜歡的任何組件傳遞值。如果您可以提供演示您場景的簡化代碼示例,我相信我們可以提供進一步的建議。您提供的信息在細節上略顯不足。 –