You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC中DevExpress GridView数据绑定问题及代码实现咨询

解决DevExpress GridView数据绑定问题

我来帮你搞定这个数据绑定的问题,核心就是把控制器里查询到的数据传递给PartialView作为Model,然后在视图里完成绑定就行。下面是修改后的完整代码:

控制器代码修改

首先调整控制器逻辑,把查询到的数据作为Model返回给PartialView:

public ActionResult UploadedIndividualViewPartial() {
    DataTable dt = new DataTable();
    using (SqlConnection cn = new SqlConnection(@"Server = DESKTOP-FSET3FF; Database = ECIF_DATA; User Id = sa; Password = Copoe113")) {
        SqlCommand cmd = new SqlCommand("select * from UploadedPotentialDataIndividu", cn);
        cn.Open();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
    }
    // 将查询得到的DataTable作为Model传递给PartialView
    return PartialView("_UploadedPotentialDataIndividual", dt);
}

这里我把DataSet换成了DataTable,因为你只需要单表数据,这样代码更简洁直接。

PartialView代码修改

然后在PartialView顶部声明Model类型,确保视图知道要接收的数据类型:

@model System.Data.DataTable

@{ 
    var grid = Html.DevExpress().GridView(settings => {
        settings.Name = "GridApproveView";
        settings.CallbackRouteValues = new { Controller = "UploadedPotentialDataMerge", Action = "UploadedIndividualViewPartial"};
        settings.Width = System.Web.UI.WebControls.Unit.Percentage(100);
        settings.SettingsPager.PageSize = 32;
        settings.Height = 200;
        settings.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
        settings.ControlStyle.Paddings.Padding = System.Web.UI.WebControls.Unit.Pixel(0);
        settings.ControlStyle.Border.BorderWidth = System.Web.UI.WebControls.Unit.Pixel(0);
        settings.ControlStyle.BorderBottom.BorderWidth = System.Web.UI.WebControls.Unit.Pixel(1);
        settings.SettingsEditing.ShowModelErrorsForEditors = true;
        settings.SettingsEditing.Mode = GridViewEditingMode.EditFormAndDisplayRow;
        settings.CommandColumn.Visible = true;
        settings.ClientSideEvents.SelectionChanged = "SelectionApproveChanged";
        settings.KeyFieldName = "ECIFCandidate";
        settings.SettingsDetail.AllowOnlyOneMasterRowExpanded = false;
        settings.SettingsDetail.ShowDetailRow = true;
        settings.CommandColumn.ShowSelectCheckbox = true;
        settings.Settings.ShowFilterBar = GridViewStatusBarMode.Visible;
        settings.SetDetailRowTemplateContent(c => {
            ViewContext.Writer.Write( "ECIF REF: <b>" + DataBinder.Eval(c.DataItem, "ECIFCandidate") + "</b>" );
            Html.RenderAction("GridDetailViewPartial", new { ECIF = DataBinder.Eval(c.DataItem, "ECIFCandidate") });
        });
    }); 
}
@grid.Bind(Model).GetHtml()

关键说明

  • 控制器通过return PartialView(视图名, 数据)的方式把查询结果传递给视图,这里的dt就是我们要绑定的数据源。
  • PartialView顶部的@model System.Data.DataTable声明了视图接收的Model类型,这样@grid.Bind(Model)就能正确识别并绑定数据。
  • 请确认你的KeyFieldName = "ECIFCandidate"确实是查询结果中的有效列名,这是GridView正常工作的必要条件。

这样修改后,你的GridView就能正确显示SQL查询出来的数据了。

内容的提问来源于stack exchange,提问作者Fikri Hailal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 18:12:38