2012-09-28 47 views
1

我在代碼背後有一個變量。我想將此值傳遞給Web控件中的Ext.Net控件。在我的例子中,我有一個ext.multicombo,我想將一個值傳遞給它的Tooltip。將參數後面的參數傳遞給Ext.Net控件

代碼背後:

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> 

我怎麼做這樣的事?

感謝

回答

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

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> 

您應該能夠適應上述與您的自定義控制工作。

希望這會有所幫助。

+0

謝謝你的回覆傑弗裏。我有點困惑。我是否創建了一個文本框並將其傳遞給multicombo控件的工具提示? – hoakey

+0

您可以使用您喜歡的任何組件傳遞值。如果您可以提供演示您場景的簡化代碼示例,我相信我們可以提供進一步的建議。您提供的信息在細節上略顯不足。 –

0

哪裏MyVariable定義?如果它是頁面類的publicprotected成員並且在頁面生命週期中足夠早地初始化(Page_Init也許可能Page_Load但我會仔細檢查並測試它),那麼此方法應該可行。

+0

我在OnPreRender中設置var。麻煩的是,我無法找到正確的語法來將值存入ext控件。 – hoakey

+0

@hoakey:你能否更新問題以顯示'MyVariable'是如何聲明和初始化的? – David