Ext存储从服务器端手动填充的存储中检索数据



我创建了2个存储,一个从数据库加载数据,另一个是空的,有2个网格。我可以将数据从网格1拖放到网格2,因此存储2将包含数据。

使用c#从代码后端检索存储2中的所有数据的最佳方法是什么?

我认为下面的Ext.NET示例可以帮助您。该示例演示了在两个GridPanel/Store组件之间移动数据,然后提交第二个GridPanel/Store组件的结果。

看到http://examples.ext.net//GridPanel/杂项/Two_Grids/

我认为,不幸的是,当使用提交表单或调用DurectEvent时,您无法从Grid或Store获得代码后面的值。此数据未提交。这样做的原因是为了减少请求,因为如果您的表单在一段时间内包含许多存储,它们将提交太多无用的数据。也许有解决办法,但我不知道。

当然,如果你想要一些像这个例子中的逻辑,你可以使用它http://examples.ext.net/#/GridPanel/WebService_Connections/StoreEvents/。但在大多数情况下,你需要更简单的解决方案。只是获取记录id存储在一个字符串,将被发送到服务器。例子:

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

最新更新