网格的最基本操作之一令人惊讶地缺乏示例。特别是如果您想将行发送回服务器以进行进一步处理。
grid.GetSelectedFieldValues() 的问题在于它会生成回发。这意味着您需要第二次回发才能将数据实际发送回服务器。
我能够实现的最优雅的解决方案是使用 grid.GetSelectedKeysOnPage()。这将返回通过 settings.KeyFieldName = "Id"; 定义的选定关键字段
将显示您的网格的视图。
<script type="text/javascript">
    $(function () {
        $('#btn1').click(function () {
            simpleGrid.PerformCallback();
        });
    });
    function OnBeginCallback(s, e) {
        var selectedValues = s.GetSelectedKeysOnPage();
        e.customArgs["Id"] = "";
        for (var i = 0; i < selectedValues.length; i++) {
            e.customArgs["Id"] += selectedValues[i] + ',';
        }
    }
</script>
@Html.Partial("ProductsPartial", Model.Data)
<div id="btn1">
    btn
</div>
在单独的局部视图中创建网格很重要(不知道为什么,但这就是 devexpress 页面上所说的。
“ProductsPartial”局部视图:
@Html.DevExpress().GridView(
        settings =>
        {
            settings.Name = "simpleGrid";
            settings.KeyFieldName = "Id";
            settings.CallbackRouteValues = new { Controller = "yourController", Action = "Postback" };
            settings.SettingsText.Title = "simpleGridWithPostback";
            settings.Settings.ShowTitlePanel = true;
            settings.Settings.ShowStatusBar = GridViewStatusBarMode.Visible;
            settings.SettingsPager.Mode = GridViewPagerMode.ShowAllRecords;
            settings.SettingsPager.AllButton.Text = "All";
            settings.SettingsPager.NextPageButton.Text = "Next >";
            settings.SettingsPager.PrevPageButton.Text = "< Prev";
            settings.Width = new System.Web.UI.WebControls.Unit(200);
            settings.Columns.Add("Id");
            settings.Columns.Add("Name");
            settings.CommandColumn.Visible = true;
            settings.CommandColumn.ShowSelectCheckbox = true;
            settings.ClientSideEvents.BeginCallback = "OnBeginCallback";
        }).Bind(Model).GetHtml()
最后是可以处理数据的控制器
public ActionResult Postback()
{
    String data = Request["Id"];
}
这样你就可以在服务器端处理你想要的所有数据