2

我在 MVC 中有如下 webgrid:如何在 webgrid 列的单行中显示值列表。我在 webgrid 列中使用 foreach,但无法识别

  Col1  Col2  Col3
    ---------------
    1    | zzz | t
         | xxx |
         | yyy |
    ---------------
    2    | aaa | P
         | bbb |
         | ccc |

上面的网格只是示例示例..我想显示数据。在第二列中,我想在单行中显示值列表。下面的代码我试过了,但我得到错误 foreach is invalid in webgrid。

在模型中:

 public class Employee
    {
        public string EmployeeId { get; set; }
        public string EmployeeName { get; set; }
        public string RowId { get; set; }
        public string Error { get; set; }
        public List<string> tbldata { get; set; }
        public List<Employee> lstEmp { get; set; }
    }

在控制器中:

public ActionResult Index()
        {

            Employee emp = new Employee();
            List<string> tbldata3 = new List<string>();
            tbldata3.Add("xxx");
            tbldata3.Add("yyy");
            tbldata3.Add("zzz");
            List<string> tbldata1 = new List<string>();
            tbldata1.Add("gggh");
            tbldata1.Add("hhhh");
            tbldata1.Add("ffff");
            List<string> tbldata2 = new List<string>();
            tbldata2.Add("ppp");
            tbldata2.Add("oooo");
            tbldata2.Add("iii");
            List<Employee> lstempo = new List<Employee>();
            lstempo.Add(new Employee { EmployeeId = "100", EmployeeName = "aaa", RowId = "111", Error = "3434", tbldata = tbldata1 });
            lstempo.Add(new Employee { EmployeeId = "101", EmployeeName = "BB", RowId = "222", Error = "6767", tbldata = tbldata2 });
            lstempo.Add(new Employee { EmployeeId = "102", EmployeeName = "ccc", RowId = "333", Error = "898", tbldata = tbldata3 });
            emp.lstEmp = lstempo;
            return View(emp);
        }

在视图中:

 @{       
                          var grid = new WebGrid(source: Model.lstEmp,
                                              canSort: true,
                                              rowsPerPage: 10,
                                              ajaxUpdateContainerId: "grdCurrentReqDetails"
                                              );
                            }
                            @grid.GetHtml(        
                                    tableStyle: "webGrid",
                                    headerStyle: "gridHead",                
                                    alternatingRowStyle: "alt",
                                    columns: grid.Columns
                                    (
                                        grid.Column("EmployeeId", header: "EmployeeId"),
                                        grid.Column("EmployeeName", header: "EmployeeName"),
                                        grid.Column("RowId", header: "RowId"),
                                        grid.Column("Error", header: "Error"),
                                                 grid.Column("Checks", format: (item) => { return new HtmlString(
                                                        "<table><tr><td>"+
                                                         foreach(var t in item.tbldata)
                                                         {
                                                             t.ToString();
                                                         }
                                                        +"</td></tr></table>"
                                                     ); })

                                    )
                            )
4

0 回答 0