Ext.net вызывает DirectMethod с выбранным обработчиком в выпадающем списке - PullRequest
1 голос
/ 18 ноября 2011

Внешняя разметка

  <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'

Ответы [ 2 ]

2 голосов
/ 05 декабря 2011

Я думаю, что лучшая практика здесь - использовать прямое событие Select.

Замените существующий прямой метод на:

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

И замените слушателя на:

<DirectEvents>
    <Select OnEvent="LoadCombo2" />
</DirectEvents>
1 голос
/ 18 ноября 2011

Попробуйте установить публичный вместо защищенного для 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>
...