组合框只显示空白列表

Combo box display only blank list

我正在使用 Ext.net 3.0。我有一个组合框并在其中创建了商店以从服务器端获取多个值。它从服务器端获取了 5 个值,但它只显示空白列表。

组合框编码......

   <ext:ComboBox runat="server" ListWidth="350" ID="Branches" FieldLabel="Branch" DisplayField="Name" ValueField="Number" AllowBlank="false">
                        <Store>
                            <ext:Store runat="server">
                                <Reader>
                                    <ext:JsonReader IDProperty="Number">
                                        <Fields>
                                            <ext:RecordField Name="Number"></ext:RecordField>
                                            <ext:RecordField Name="Name"></ext:RecordField>
                                        </Fields>
                                    </ext:JsonReader>
                                </Reader>
                            </ext:Store>
                        </Store>
</ext:ComboBox>

服务器端编码......

  var branchList = from b in Branches select new { Number = b.Number, Name =   b.Name };

  List<object> listBranchToAdd = new List<object>();
  foreach (var a in branchList)
   {
     listBranchToAdd.Add(a);
   }

  Branches.Store.Primary.DataSource = listBranchToAdd;
  Branches.Store.Primary.DataBind();

我的研究 -

  1. 有人说,不要直接在store中添加combo,而是通过给定的store id单独创建一个store,然后在combo中使用store id,但是不行

  2. var branchList 返回值.. 我已经检查过了。当我使用 cmbBranches.setValue(listBranchToAdd[0]);然后它在 Fiddler 中显示值。但无法正确显示在组合框中。

3.Just 在商店中提供一个 storeId 并在服务器端用于绑定商店中的数据,而不是在组合框中绑定。我试过了,还是不行。

看看这个例子

<ext:ComboBox runat="server" ID="cmb" EmptyText="select.." ForceSelection="true" AllowBlank="false"
Editable="false" Icon="BulletTick" Flex="1" ValueField="Id" DisplayField="Name" FieldLabel="Name">
        <Store>
         <ext:Store ID="strcmb" runat="server">
              <Model>
                  <ext:Model ID="Model4" runat="server">
                     <Fields>
                      <ext:ModelField Name="Number" />
                      <ext:ModelField Name="Name" />
                     </Fields>
                  </ext:Model>
              </Model>
         </ext:Store>
    </Store>
</ext:ComboBox>

和服务器端

 strcmb.DataSource = _bll.Get();
 strcmb.DataBind();

在你的情况下,如果不发出网络服务请求,则不需要<Reader><ext:JsonReader...>这部分

更新

    var branchList = from b in Branches select new MyClass { Number = b.Number, Name =   b.Name };

strcmb.DataSource = branchList.ToList();
  strcmb.DataBind();
        MyClass{
        public string Name {get;set;}
        public int Number {get ;set;}
        }

最后,我得到了这个问题的解决方案。我没有正确理解它工作的实际逻辑,但它工作正常。

以前的代码 - 它不工作

var branchList = from b in Branches select new { Number = b.Number, Name =   b.Name };

  List<object> listBranchToAdd = new List<object>();
  foreach (var a in branchList)
   {
     listBranchToAdd.Add(a);
   }

  Branches.Store.Primary.DataSource = listBranchToAdd;
  Branches.Store.Primary.DataBind();

新代码 - 有效

var branchList = from b in Branches select b;

      List<Branch> listBranchToAdd = new List<Branch>();
      foreach (var a in branchList)
       {
         listBranchToAdd.Add(a);
       }

      Branches.Store.Primary.DataSource = listBranchToAdd;
      Branches.Store.Primary.DataBind();