1

我在控制背后的代码中有一个变量。我想将此值传递给 Web 控件中的 Ext.Net 控件。在我的实例中,我有一个 ext.multicombo,我想将一个值传递给它的工具提示。

代码背后:

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

控件.aspx

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

我该怎么做这样的事情?

谢谢

4

2 回答 2

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>

您应该能够调整上述内容以使用您的自定义控件。

希望这可以帮助。

于 2012-09-29T01:34:45.287 回答
0

在哪里MyVariable定义?如果它是页面类的一个publicprotected成员并且在页面生命周期中足够早地初始化(Page_Init也许?也许Page_Load但我会仔细检查并测试它)那么这种方法应该有效。

于 2012-09-28T14:55:11.827 回答