Есть несколько вопросов:
Используемый синтаксис не будет работать с элементами управления 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>
Вы должны быть в состоянии адаптировать вышеизложенное для работы с вашим пользовательским элементом управления.
Надеюсь это поможет.
person
geoffrey.mcgill
schedule
29.09.2012