Я создал 2 хранилища, одно из которых загружает данные из базы данных, а другое пустое, с двумя сетками, я могу перетаскивать данные из сетки 1 в сетку 2, поэтому хранилище 2 будет содержать данные. каков наилучший способ получить все данные, которые находятся в хранилище 2, из кода, стоящего за С#.
ext store извлекает данные на стороне сервера из хранилища, заполненного вручную
Ответы (3)
Я думаю, что следующий пример Ext.NET может помочь. В примере демонстрируется перемещение данных между двумя компонентами GridPanel/Store с последующей отправкой результатов второго GridPanel/Store.
См. http://examples.ext.net/#/GridPanel/Miscellaneous/Two_Grids/< /а>
Я думаю, к сожалению, вы не можете получить код за значениями из сетки или хранилища при использовании формы отправки или вызове DurectEvent. Эти данные не представлены. Причина в том, чтобы минимизировать запрос, потому что если ваша форма будет содержать много магазинов через какое-то время, они будут отправлять слишком много бесполезных данных. Возможно, решение существует, но я его не знаю.
Конечно, если вам нужна логика, как в этом примере, вы можете использовать ее http://examples.ext.net/#/GridPanel/WebService_Connections/StoreEvents/. Но в большинстве ситуаций вам нужно более простое решение. Просто получение идентификаторов записей в одной строке, которая будет отправлена на сервер. Пример:
function getStoreValues(store) {
var a = [];
store.each(function (r) { a.push(r.id); })
return a.join(',')
}
Полный пример вы найдете здесь: http://pastebin.com/pgSfgPt3
На стороне клиента
<ext:Button ID="SaveButton" runat="server" Text="Save" Disabled="true">
<DirectEvents>
<Click OnEvent="Save">
<ExtraParams>
<ext:Parameter
Name="items"
Value="#{MultiSelect1}.getValues(true)"
Mode="Raw"
Encode="true" />
</ExtraParams>
</Click>
</DirectEvents>
</ext:Button>
На стороне вашего сервера
protected void Save(object sender, DirectEventArgs e) {
var items = e.ExtraParams["items"];
var selectedCountries = JSON.Deserialize<ListItem[]>(items);
//you deserializa all your data in ListItem, since I use a multi select. With GridPanels, you have to use the object.
return selectedCountries.Select(item => Convert.ToInt64(item.Value)).ToList();
}