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

В любом случае спасибо.

Пожалуйста, попробуйте следующее.

  1. Установите идентификатор для магазина.

    .ID("Store1")
    
  2. Сделайте следующее в действии контроллера.

    Store store = X.GetCmp<Store>("Store1");
    store.DataSource = db.StylesPropertyDefs.OrderBy(o => o.PropertyId);
    store.DataBind();
    
Другие вопросы по тегам