我有下面的代码从数据库中提取数据,返回一个viewmodel并填充一个webgrid。 在视图上,旁边有一个下拉列表和一个按钮。
我希望我的用户从下拉列表中选择任何项目,然后单击按钮进行搜索 使用所选项目的数据。
我想重用webgrid来显示数据。我想我需要点击一下进行Ajax调用 按钮。
我该怎么做才能再次使用webgrid。
public ActionResult Index()
{
string phyLocationName = string.Empty;
string extractPhylocationcode = string.Empty;
var currentUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();
Edmviewmodel objedmtest = new Edmviewmodel();
if (currentUser != null)
{
try
{
string cleanedCurrentUser = currentUser.Substring(5);
SearchActiveDirectory obj = new SearchActiveDirectory();
phyLocationName = obj.GetLocationCode(cleanedCurrentUser);
extractPhylocationcode = phyLocationName.Substring(0, 3);
//Use my viewmodel to get all data
objedmtest = _edmDataService.GetRequiredData(extractPhylocationcode);
objedmtest.BranchesSetup.selectedbranch = phyLocationName;
}
catch (Exception ex)
{
//logger.Error(ex);
}
}
return View(objedmtest);
}
我已经在我的viewmodel中获得了webgrid所需的数据,这就是下面的这一行。那我需要另一个吗?
public List<Catalogorder> GetCatDataByLocation { get; set; }
public class Edmviewmodel
{
public Setupbranches BranchesSetup { get; set; }
public List<Catalogorder> GetCatDataByLocation { get; set; }
public List<SelectListItem> GetRouteByBranch { get; set; }
}
答案 0 :(得分:0)
这是一个如何通过一些代码重用来实现这一目标的框架(不必复制代码来呈现网格)
Edmviewmodel
List<WebgridItems> Items { get; set; }
控制器
Index()
Get the Items and build the Edmviewmodel
View(Edmviewmodel)
查看
@model Edmviewmodel
Html.PartialView("Grid", Edmviewmodel.Items)
网格局部视图
@model List<WebgridItems>
foreach(var item in Model)
render grid row
现在进行Ajax调用
控制器
IndexGrid(int filterItem)
var vm = Get the List<WebgridItems> using the filterItem
return PartialView("Grid, vm)
客户端
选择下拉项并单击按钮后,使用filterItem调用IndexGrid
。用生成的HTML替换网格。