Ext.Net MVC обновляет Panelgrid с контроллера
На мой взгляд, есть это:
@{
var properties = db.StylesPropertyDefs.OrderBy(o => o.PropertyId);
}
..
..
@(Html.X().GridPanel()
.Title("Array Grid")
.ID("propertyGrid")
.Width(600)
.Height(350)
.Store(Html.X().Store()
.Model(Html.X().Model()
.Fields(
new ModelField("PropertyId", ModelFieldType.Int),
new ModelField("PropertyName", ModelFieldType.String),
new ModelField("PropertyShortName", ModelFieldType.String),
new ModelField("PropertyActiveFlag", ModelFieldType.Boolean)
)
).DataSource(properties)
..
..
И у меня есть действие в контроллере, чтобы добавить новое свойство. Новое свойство добавлено успешно, но я могу обновить PanelGrid (без обновления всей страницы). Вот контроллер:
[DirectMethod]
public ActionResult AddNewProperty(string propertyName, string propertyCode, bool propertyActive)
{
if (propertyName == "" || propertyCode=="")
{
X.Msg.Show(new MessageBoxConfig
{
Title = "Error",
Message = "The field name or code can not be empty.",
Buttons = MessageBox.Button.OK,
Icon = MessageBox.Icon.ERROR
});
return this.Direct();
}
//if all is ok add new property
var newOne = new StylesPropertyDef
{
PropertyActiveFlag = propertyActive,
PropertyName = propertyName,
PropertyShortName = propertyCode
};
var db = new TaosKnowledgeDataContext(DataUtils.GetConStringLocal());
db.StylesPropertyDefs.InsertOnSubmit(newOne);
db.SubmitChanges();
//reload properties
var properties = db.StylesPropertyDefs.OrderBy(o => o.PropertyId);
var theGrid = X.GetCmp<GridPanel>("propertyGrid");
//now i need refresh or reload the panel grid.
X.GetCmp<Window>("AddNewProperty").Close();
return this.Direct();
//return RedirectToAction("StyleProperties");
}
Итак, для возобновления мне нужно обновить источник данных PanelGrid (или хранилище) из контроллера. Не могли бы вы мне помочь пожалуйста?
2 ответа
Решение
Хорошо. Я решаю. Я удалил источник данных в магазине и установил прокси-ридер в контроллер.
.Proxy(
Html.X().AjaxProxy()
.Url(Url.Action("Read"))
.Reader(Html.X().JsonReader().Root("data"))
)
В контроллере:
public ActionResult Read()
{
var db = new TaosKnowledgeDataContext(DataUtils.GetConStringLocal());
var properties = db.StylesPropertyDefs.OrderBy(o => o.PropertyId);
return this.Store(properties);
}
И когда вставить новое свойство:
var store = X.GetCmp<Store>("Store1");
store.Reload();
В любом случае спасибо.
Пожалуйста, попробуйте следующее.
Установите идентификатор для магазина.
.ID("Store1")
Сделайте следующее в действии контроллера.
Store store = X.GetCmp<Store>("Store1"); store.DataSource = db.StylesPropertyDefs.OrderBy(o => o.PropertyId); store.DataBind();