组合框只显示空白列表
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();
我的研究 -
有人说,不要直接在store中添加combo,而是通过给定的store id单独创建一个store,然后在combo中使用store id,但是不行
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();
我正在使用 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();
我的研究 -
有人说,不要直接在store中添加combo,而是通过给定的store id单独创建一个store,然后在combo中使用store id,但是不行
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();