Asp.net mvc Ext.net:如何设置更改外键字段的组合框并通过AutoAsync()保存?
我对GridPanel有些问题。表请求中的列是外键。如何显示更改此字段的组合框?此代码显示了组合框,但值未设置为GridPanel中的字段。当我试图更改某些字段时,AutoAsync()会得到一个异常状态代码500Asp.net mvc Ext.net:如何设置更改外键字段的组合框并通过AutoAsync()保存?,asp.net-mvc,ext.net,Asp.net Mvc,Ext.net,我对GridPanel有些问题。表请求中的列是外键。如何显示更改此字段的组合框?此代码显示了组合框,但值未设置为GridPanel中的字段。当我试图更改某些字段时,AutoAsync()会得到一个异常状态代码500 @model IEnumerable<GeoSystem.Models.Request> @(Html.X().Store() .ID("BrigadeStore") .Model(Html.X().Model()
@model IEnumerable<GeoSystem.Models.Request>
@(Html.X().Store()
.ID("BrigadeStore")
.Model(Html.X().Model()
.Fields(
new ModelField("id", ModelFieldType.Int) { Mapping = "BrigadeID" },
new ModelField("name", ModelFieldType.String) { Mapping = "BrigadeName" }
)
)
.Proxy(Html.X().AjaxProxy()
.Url(Url.Action("GetBrigades"))
.Reader(Html.X().JsonReader().RootProperty("data"))
)
)
@(Html.X().GridPanel()
.ID("GridPanelRequest")
.Store(
Html.X().StoreForModel().ID("StoreRequest")
.AutoSync(true)
.ShowWarningOnFailure(false)
.SyncUrl(Url.Action("RequestHandleChanges"))
)
.Icon(Icon.Table)
.Frame(true)
.Title("Заявки")
.Height(430)
.Width(500)
.StyleSpec("margin-top: 10px;")
.ColumnModel(
Html.X().ColumnFor(Model, m => m.RequestName)
.ToBuilder<Column.Builder>()
.Flex(1)
.Editor(
Html.X().TextField().AllowBlank(false)
),
Html.X().ColumnFor(Model, m => m.Start)
.ToBuilder<Column.Builder>()
.Flex(1)
.Editor(
Html.X().TextField().AllowBlank(false)
),
Html.X().ColumnFor(Model, m => m.Brigade.BrigadeName)
.ToBuilder<Column.Builder>()
.Flex(1)
.Editor(
Html.X().ComboBox()
.QueryMode(DataLoadMode.Remote)
.TriggerAction(TriggerAction.All)
.StoreID("BrigadeStore")
.ValueField("id")
.DisplayField("name")
)
)
.Plugins(
Html.X().CellEditing()
)
)
@model IEnumerable
@(Html.X().Store())
.ID(“旅店”)
.Model(Html.X().Model())
.菲尔德(
新的ModelField(“id”,ModelFieldType.Int){Mapping=“BrigadeID”},
新建模型字段(“名称”,ModelFieldType.String){Mapping=“BrigadeName”}
)
)
.Proxy(Html.X().AjaxProxy())
.Url(Url.Action(“GetBrigades”))
.Reader(Html.X().JsonReader().RootProperty(“数据”))
)
)
@(Html.X().GridPanel())
.ID(“请求”)
.商店(
Html.X().StoreForModel().ID(“StoreRequest”)
.自动同步(真)
.显示警告失败(错误)
.SyncUrl(Url.Action(“RequestHandleChanges”))
)
.Icon(Icon.Table)
.帧(真)
.标题(“аааааааааа”)
.身高(430)
.宽度(500)
.StyleSpec(“页边距顶部:10px;”)
.ColumnModel(
Html.X().ColumnFor(Model,m=>m.RequestName)
.ToBuilder()
.Flex(1)
.编辑(
Html.X().TextField().AllowBlank(false)
),
Html.X().ColumnFor(Model,m=>m.Start)
.ToBuilder()
.Flex(1)
.编辑(
Html.X().TextField().AllowBlank(false)
),
Html.X().ColumnFor(模型,m=>m.battle.BrigadeName)
.ToBuilder()
.Flex(1)
.编辑(
Html.X().ComboBox()
.QueryMode(DataLoadMode.Remote)
.triggeration(triggeration.All)
.StoreID(“BrigadeStore”)
.ValueField(“id”)
.DisplayField(“名称”)
)
)
.插件(
Html.X().CellEditing()
)
)
组合框的问题我用这种方法解决了。
为combobox的存储添加了一个新类。控制器返回此对象的列表
public class BrigadeComboBox
{
public string BrigadeName;
public Brigade Brigade;
}
然后为组合框存储
@(Html.X().Store()
.ID("BrigadeStore")
.Model(Html.X().Model()
.Fields(
new ModelField("brigade", ModelFieldType.Object) { Mapping = "Brigade" },
new ModelField("BrigadeName", ModelFieldType.String) { Mapping = "BrigadeName" }
)
)
.Proxy(Html.X().AjaxProxy()
.Url(Url.Action("GetBrigades"))
.Reader(Html.X().JsonReader().RootProperty("data"))
)
)
在添加GridPanel的存储模型字段中
new ModelField()
{
Name = "Brigade",
Type = ModelFieldType.Object
}
我用Column替换了它
Html.X().Column()
.Text("Бригада")
.DataIndex("Brigade")
而ColumnModel
中列的编辑器
是
.Editor(Html.X().ComboBox()
.QueryMode(DataLoadMode.Remote)
.TriggerAction(TriggerAction.All)
.StoreID("BrigadeStore")
.ValueField("brigade")
.DisplayField("BrigadeName"))
我还为列添加了.Renderer(“Brigaderender”)
var brigadeRenderer = function (value) {
if (!Ext.isEmpty(value)) {
return value.BrigadeName;
}
return value;
};
但这并不能解决AsyncTask的问题。500代表“内部服务器错误”。您可以添加异常详细信息吗?我尝试var onStoreException=function(proxy,response,operation){var error=operation.getError(),message=Ext.isString(error)?错误:('('+error.status+'))'+error.statusText);Ext.net.Notification.show({iconCls:'图标感叹号',html:message+“\n
代理类型:“+Proxy.type,标题:'异常',可滚动:'两者',隐藏显示:5000,宽度:300,高度:200});};
.Listeners(l=>{l.Exception.Fn=“onStoreException”;l.Exception.Buffer=10;})
但它没有什么可显示的。