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
相关产品推荐
相关产品推荐

