Передача кода за параметром в элемент управления Ext.Net

У меня есть переменная в коде за управлением. Я хочу передать это значение элементу управления Ext.Net в веб-элементе управления. В моем случае у меня есть ext.multicombo, и я хочу передать значение в его всплывающую подсказку.

Код позади:

protected override void OnPreRender(EventArgs e)
{
this.MaxFuelFilter = System.Configuration.ConfigurationManager.AppSettings["MyVariable"]; 
}

Control.aspx

<ext:multicombo ID="ddlFlightNumber" runat="server" ClientID="ddlFlightNumber" IndicatorTip="blah blah blah  <%=MyVariable%> blah blah blah"></ext:multicombo>

Как мне сделать что-то подобное?

Спасибо


person hoakey    schedule 28.09.2012    source источник


Ответы (2)


Есть несколько вопросов:

Используемый синтаксис не будет работать с элементами управления 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
comment
Спасибо за ваш ответ Джеффри. Я немного запутался. Я создаю текстовое поле и передаю его во всплывающую подсказку мультикомбо? - person hoakey; 01.10.2012
comment
Вы можете передать значение, используя любой компонент, который вам нравится. Если вы можете предоставить упрощенный пример кода, демонстрирующий ваш сценарий, я уверен, что мы могли бы предложить дополнительные предложения. Информация, которую вы предоставили, немного скудна по деталям. - person geoffrey.mcgill; 02.10.2012

Где определяется MyVariable? Если это public или protected член класса страницы и он инициализирован достаточно рано в жизненном цикле страницы (может быть Page_Init? Может быть Page_Load, но я бы перепроверил и протестировал его), тогда этот подход должен работать.

person David    schedule 28.09.2012
comment
Я устанавливаю var в OnPreRender. Проблема в том, что я не могу найти правильный синтаксис для передачи значения в элемент управления ext. - person hoakey; 28.09.2012
comment
@hoakey: Можете ли вы обновить вопрос, чтобы показать, как MyVariable объявляется и инициализируется? - person David; 28.09.2012