1

コード ビハインド コントロールに変数があります。この値を Web コントロールの Ext.Net コントロールに渡したいです。私のインスタンスでは、ext.multicombo があり、値を Tooltip に渡したいと考えています。

コードビハインド:

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 %>"

プロパティには、databind変数/スクリプトのみを含める必要があります(例)

PropertyName="<%# MyVariable%>"

AND ...コントロールで.DataBind()を呼び出す必要があります。例

this.MyControl1.DataBind();

または、Ext.NET Controlsを使用すると、.AutoDataBind="true"プロパティを設定でき、DataBindingが自動的に処理されます。

<ext:TextField runat="server" PropertyName="<%# MyVariable%>" AutoDataBind="true" />

上記のカスタムプロパティはJavaScriptに自動シリアル化され、そのコントロール(およびその他)のクライアント側インスタンスで使用できるようになりました。その後、他のJavaScriptコードからそのプロパティを呼び出すことができます。

<AfterRender>シナリオでは、のリスナー<ext:MultiCombo>を利用してプロパティ値を取得し、別の値を設定することをお勧めします。次のサンプルは、完全なシナリオ( )を示し、JavaScript変数をサーバー側からクライアント側に渡すためのmyVar別の基本的な手法()も示しています。myVar2

<%@ 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定義されていますか?それがページのクラスのpublicまたはprotectedメンバーであり、ページのライフサイクルの十分早い段階で初期化されている場合(Page_Initおそらく?多分ですPage_Loadが、再確認してテストします)、このアプローチは機能するはずです。

于 2012-09-28T14:55:11.827 に答える