mvc:在已加载索引页面时,单击按钮时使用相同的webgrid进行数据显示

时间:2016-03-31 15:53:18

标签: asp.net-mvc-4

我有下面的代码从数据库中提取数据,返回一个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; }

            }

1 个答案:

答案 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替换网格。