Editable GridPanel

40 views
Skip to first unread message

Viktor Sirchenko

unread,
Sep 4, 2014, 11:27:30 PM9/4/14
to ext...@googlegroups.com
всем привет, 
использую редактирование записи в гриде, если с обычными компонентами все работает нормально, то вот с ComboBox, все совсем не там
Выбирать конечно он дает, это все супер, но после выбора вместо выбранного текста, выходит Id записи

вот скрипт который я использую

new ModelField("ChargeID", ModelFieldType.Int),



Html.X().Column().Text("Расходы").DataIndex("ChargeID").Flex(1)
                       
.Editor(Html.X()
                           
.ComboBox()
                           
.DisplayField("Name_rus")
                           
.ValueField("ID")
                           
.Store(Html.X().Store()
                               
.AutoLoad(false)
                               
.ID("StoreCharge")
                               
.Model(Html.X().Model()
                                   
.Fields(
                                       
new ModelField("Name_rus"),
                                       
new ModelField("ID")
                                   
)
                               
)
                               
.Proxy(Html.X().AjaxProxy()
                                   
.Url(Url.Action("LoadList", "Charge"))
                                   
.Reader(Html.X().JsonReader().Root("data"))
                               
)
                           
)),

Daniil Veriga

unread,
Sep 5, 2014, 4:13:48 AM9/5/14
to ext...@googlegroups.com
Приветствую!

Гляньте, пожалуйста, Renderer Department колонки:
http://examples.ext.net/#/GridPanel/Data_Presentation/Editor_Field_Mapping/




--
Вы получили это сообщение, поскольку подписаны на группу "Ext.NET".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес extnet+un...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Viktor Sirchenko

unread,
Sep 5, 2014, 4:26:39 AM9/5/14
to ext...@googlegroups.com
Я этот вариант и пытаюсь сейчас сделать, только в моем случае Store-ы, при открытии формы еще не заполнены, как можно их заполнить, если я работаю с MVC?

пятница, 5 сентября 2014 г., 14:13:48 UTC+6 пользователь Daniil написал:

Daniil Veriga

unread,
Sep 5, 2014, 10:24:21 AM9/5/14
to ext...@googlegroups.com
Можно стору .DataSource или .Data поставить во вьюхе. Тогда стор загрузится быстрее, без доп. запроса.

Также, гриду можно поставить AutoLoad false и слушать Load событие у ComboBox стора и в нём вызывать загрузку стора грида.

grid.getStore().load();

Viktor Sirchenko

unread,
Sep 5, 2014, 4:00:32 PM9/5/14
to ext...@googlegroups.com
А можно примерчик для первого варианта?

пятница, 5 сентября 2014 г., 20:24:21 UTC+6 пользователь Daniil написал:

Viktor Sirchenko

unread,
Sep 5, 2014, 10:18:15 PM9/5/14
to ext...@googlegroups.com
Пытался заполнить DataSource через ViewBag, но при открытии страницы получал ошибку

An exception of type 'System.ArgumentException' occurred in Ext.Net.dll but was not handled in user code
Additional information: Invalid data source source type. The data source must be of type IListSource, IEnumerable or IDataSource.

вот код:

на клиенте

Html.X().ComboBoxFor(m => m.OrganizationID)
               
.FieldLabel("Организация")
               
.SimpleSubmit(true)
               
.DisplayField("Name")

               
.ValueField("ID")
               
.Store(Html.X().Store()
                   
.AutoLoad(false)

                   
.ID("StoreOrganizations")
                   
.Model(Html.X().Model()
                       
.Fields(
                           
new ModelField("Name"),

                           
new ModelField("ID")
                       
)
                   
)

                   
.DataSource(ViewBag.dsOrganization)

               
),

на сервере

ViewBag.dsOrganization = db.Organizations.ToList();

Daniil Veriga

unread,
Sep 6, 2014, 3:52:58 AM9/6/14
to ext...@googlegroups.com
Какой тип возвращает?
db.Organizations.ToList()


2014-09-06 6:18 GMT+04:00 Viktor Sirchenko <vsirc...@gmail.com>:

--

Viktor Sirchenko

unread,
Sep 6, 2014, 11:17:49 PM9/6/14
to ext...@googlegroups.com
Если верить Студии то System.Collections.Generic.List<>

суббота, 6 сентября 2014 г., 13:52:58 UTC+6 пользователь Daniil написал:

Daniil Veriga

unread,
Sep 7, 2014, 1:41:11 AM9/7/14
to ext...@googlegroups.com
Тип верен, но такой Exception может случиться, если ViewBag.dsOrganization is null.

.DataSource(ViewBag.dsOrganization)

Viktor Sirchenko

unread,
Sep 7, 2014, 1:42:35 PM9/7/14
to ext...@googlegroups.com
Попытался сделать иначе

.DataSource(Organizations)

var Organizations = ViewBag.dsOrganization;

но результат тот же, может попробовать заполнить Store иначе, через прокси, но при загрузке страницы

воскресенье, 7 сентября 2014 г., 11:41:11 UTC+6 пользователь Daniil написал:

Viktor Sirchenko

unread,
Sep 7, 2014, 11:51:10 PM9/7/14
to ext...@googlegroups.com
Установил у Store Свойство AutoLoad(true), данные появились
 но вот getById не работает, причем когда смотрю Store через console.info(), показывает что у Store есть data, в ней есть Items и там нужные мне строки
пытался сделать пробежку по циклу, он он мне возвращает что Items,length = 0, хотя когда смотрю Store все есть

Viktor Sirchenko

unread,
Sep 9, 2014, 10:37:51 PM9/9/14
to ext...@googlegroups.com
Ну вроде вопрос решился, но как всегда что то выплывет еще

Есть такой сценарий, в строке Grid которую надо редактировать есть 2 ComboBox-a, причем записи во втором, зависят от выбранной записи в первом
Попробовал сделать так, во втором ComboBox

.Proxy(Html.X().AjaxProxy()
   
.Url(Url.Action("LoadList", "ArticleExpendure"))
   
.ExtraParams(x =>
        x
.Add(new Parameter("SpecificityID", "getSpecifityValue()", ParameterMode.Raw))
   
)
   
.Reader(Html.X().JsonReader().Root("data"))
)

но почему то функция getSpecifityValue, вызывается в момент добавления строки, а не в момент активации ComboBox-a

понедельник, 8 сентября 2014 г., 9:51:10 UTC+6 пользователь Viktor Sirchenko написал:

Daniil Veriga

unread,
Sep 10, 2014, 3:26:39 AM9/10/14
to ext...@googlegroups.com
У стора AutoLoad="true" по умолчанию. Соответственно, загружается стор в момент создания, а если загружается, то и ExtraParams вычисляется.

--

Viktor Sirchenko

unread,
Sep 13, 2014, 1:13:37 PM9/13/14
to ext...@googlegroups.com
У меня AutoLoad="false" у того Store, которое использует ExtraParams и все равно запрос данных происходит при создании строки

среда, 10 сентября 2014 г., 1:26:39 UTC-6 пользователь Daniil написал:

Daniil Veriga

unread,
Sep 14, 2014, 3:16:52 AM9/14/14
to ext...@googlegroups.com
Сложно сказать, что происходит.

Viktor Sirchenko

unread,
Sep 15, 2014, 12:56:34 AM9/15/14
to ext...@googlegroups.com
Можно как то отследить окончание редактирования в GridPanel, самой строки или определенного Editor-а?

Daniil Veriga

unread,
Sep 15, 2014, 12:58:27 AM9/15/14
to ext...@googlegroups.com
Есть события у плагинов редактирование. Кажется, Edit называется.

Также, у колонки есть EditorOptions. Там можно задать listener для конкретного эдитора.

2014-09-15 8:56 GMT+04:00 Viktor Sirchenko <vsirc...@gmail.com>:
Можно как то отследить окончание редактирования в GridPanel, самой строки или определенного Editor-а?

--
Reply all
Reply to author
Forward
0 new messages