2011-11-18 39 views
1

內線標記Ext.net調用與選擇處理程序一DirectMethod在組合框中

<Listeners> 
    <Select Handler="Ext.net.DirectMethods.loadcombo2();" /> 
    </Listeners> 

C#

[DirectMethod] 
protected void loadcombo2() 
{ 
    this.ComboBox2.AddItem("List1", "L1"); 
    this.ComboBox2.AddItem("List2", "L2"); 

} 

如何調用與組合框小區改變的直接方法?

即時得到一個錯誤這

Uncaught TypeError: Object #<Object> has no method 'loadcombo2' 

回答

1

嘗試設置公衆,而不是保護的loadcombo2

你可以試試這個代碼,它工作正常,我:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<script runat="server"> 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!X.IsAjaxRequest) { 
      this.Store1.DataSource = new object[] { 
       new object[] {"AL", "Alabama", "The Heart of Dixie"}, 

      }; 

      this.Store1.DataBind(); 
     } 

    } 

    [DirectMethod] 
    public void LoadCombo2() { 
     this.ComboBox1.AddItem("List1", "L1"); 
     this.ComboBox1.AddItem("List2", "L2"); 
    } 

</script> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title>Comboboxes - Ext.NET Examples</title> 
</head> 
<body> 
    <form id="Form1" runat="server"> 
     <ext:ResourceManager ID="ResourceManager1" runat="server" /> 

     <ext:Store ID="Store1" runat="server"> 
      <Reader> 
       <ext:ArrayReader> 
        <Fields> 
         <ext:RecordField Name="abbr" /> 
         <ext:RecordField Name="state" /> 
         <ext:RecordField Name="nick" /> 
        </Fields> 
       </ext:ArrayReader> 
      </Reader>    
     </ext:Store> 

     <h2>Not Editable:</h2> 

     <ext:ComboBox 
      ID="ComboBox1" 
      runat="server" 
      StoreID="Store1" 
      Editable="false" 
      DisplayField="state" 
      ValueField="abbr" 
      TypeAhead="true" 
      Mode="Local" 
      ForceSelection="true" 
      EmptyText="Select a state..." 
      Resizable="true" 
      SelectOnFocus="true" 
      > 
      <Listeners> 
       <Select Handler="DT.Everest.DocFlow.LoadCombo2();" /> 
      </Listeners> 

      </ext:ComboBox> 
    </form> 
</body> 
</html> 
2

我認爲這裏的最佳做法是使用Select直接事件。

替換爲您現有的直接法:

protected void LoadCombo2(object sender, DirectEventArgs e) { 
    this.ComboBox1.AddItem("List1", "L1"); 
    this.ComboBox1.AddItem("List2", "L2"); 
} 

,取而代之的監聽器:

<DirectEvents> 
    <Select OnEvent="LoadCombo2" /> 
</DirectEvents>