我正在使用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();
我的研究 -
有人说,不要直接在商店中添加组合,按给定的商店ID分别创建商店,然后在组合中使用商店ID,但它不起作用。
var branchList返回值..我已经检查过了。当我使用 cmbBranches.setValue(listBranchToAdd [0]);然后它在Fiddler中显示值。但不能正确显示在组合框中。
3.只需在商店中提供storeId并在服务器端使用,以便在商店中绑定数据而不是在组合框中绑定。我已经尝试过但它不起作用。
答案 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();