组合框仅显示空白列表

时间:2015-06-26 01:34:48

标签: c# asp.net-mvc extjs combobox ext.net

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

enter image description here

组合框的编码..............

   <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. 有人说,不要直接在商店中添加组合,按给定的商店ID分别创建商店,然后在组合中使用商店ID,但它不起作用。

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

  3. 3.只需在商店中提供storeId并在服务器端使用,以便在商店中绑定数据而不是在组合框中绑定。我已经尝试过但它不起作用。

2 个答案:

答案 0 :(得分:0)

看一下这个例子

<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;}
        }

答案 1 :(得分:0)

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

以前的代码 - 它无效

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();