0

実行時にストア変数にバインドしようとすると、コンボボックスをレンダリングできません。

//Apx ページ。

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
    <title>Ext.NET Examples</title>

    <script runat="server">
        Store storeTable;
        private void createStoreTable()
        {
            storeTable = new Store();
            storeTable.ID = "storeTable";
            Ext.Net.Model model = new Model();
            ModelField modelField = new ModelField();
            modelField.Name = "name";
            model.Fields.Add(modelField);
            storeTable.Model.Add(model);

        }
        private DataTable GetDataTable()
        {
            DataTable table = new DataTable();

            table.Columns.AddRange(new DataColumn[] {
            new DataColumn("name")   { ColumnName = "name",    DataType = typeof(string) },
            new DataColumn("ID")     { ColumnName = "ID",      DataType = typeof(double) }
        });

            foreach (object[] obj in this.Data)
            {
                table.Rows.Add(obj);
            }

            return table;
        }
        private object[] Data
        {
            get
            {
                DateTime now = DateTime.Now;

                return new object[]
            {
                new object[] { "peter", 1 },
                new object[] { "John", 2},
                new object[] { "Stella", 3}
            };
            }
        }
        private void PopulateEmp()
        {
            try
            {
                createStoreTable();
                this.storeTable.DataSource = GetDataTable();
                cboTable.Store.Add(storeTable);
                cboTable.DisplayField = "name";
                cboTable.ValueField = "ID";
                cboTable.Render();
            }
            catch (Exception ex)
            {
                X.Msg.Show(new MessageBoxConfig
                {
                    Message = ex.Message,
                    Title = "Error Message",
                    Width = 300,
                    Buttons = MessageBox.Button.OKCANCEL
                });
                X.Msg.Show();
                //Response.Write(ex.Message);
            }
        }
        protected void cboTable_Change(object sender, EventArgs e)
        {
            PopulateEmp();
        }

        protected void Page_Load(object sender, EventArgs e)
        {


        }
</script>

</head>
<body>
    <form id="form1" runat="server">
    <ext:ResourceManager ID="ResourceManager1" runat="server" />
    <ext:FormPanel ID="frmPanel1" runat="server">
        <Items>
            <ext:ComboBox runat="server" ID="cboDB" FieldLabel="select comp" Text="delete">
                <Items>
                    <ext:ListItem Text="MS" Value="MS"/>
                    <ext:ListItem Text="Oracle" Value="Oracle" />
                    <ext:ListItem Text="Java" Value="Java" />
                </Items>
                <DirectEvents>
                    <Select OnEvent="cboTable_Change" />
                </DirectEvents>
            </ext:ComboBox>
            <ext:ComboBox ID="cboTable" runat="server" FieldLabel="Select Emp">
            </ext:ComboBox>
            <ext:TextField runat="server" ID="lblTest" FieldLabel="Name" />
            <ext:Button ID="btnSearch" runat="server" Text="Search" />
        </Items>
    </ext:FormPanel>
    </form>
</body>
</html>

上記の例では、2 番目のコンボボックスの後に 1 つの TextBox と 1 つのボタンが存在します。最初のコンボボックスの選択時に別のコンボボックスをレンダリングしようとしていますが、正常に機能していますが、2番目のドロップダウンが最後にレンダリングされています。

4

1 に答える 1

0

交換してください

cboTable.Render();

cboTable.InsertTo(1, this.frmPanel1);

また、私は置くだろう

cboTable.SuspendScripting();

try ブロックの先頭に。そうでなければ、これ

cboTable.DisplayField = "name";
cboTable.ValueField = "ID";

クライアント側のプロパティを反映する JavaScript を生成します。ただし、ComboBox を再レンダリングするため、必須ではありません。

于 2013-05-01T16:40:25.117 に答える