这是我的第一篇文章。帮我。如何将数据表绑定到webgrid? 我的代码:
SqlConnection con = new SqlConnection(CS);
SqlCommand cmd = new SqlCommand("select * from candidate", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return View(dt);
我想将数据表绑定到webgrid..help me ...
答案 0 :(得分:3)
这是我发现的最佳解决方案:)希望它可以帮到你:
SqlConnection con = new SqlConnection(CS);
SqlCommand cmd = new SqlCommand("select * from candidate", con);
DataTable dt = new DataTable();
SqlDataAdapter a = new SqlDataAdapter(cmd)
a.Fill(dt);
var result = new List<dynamic>();
foreach (DataRow row in dt.Rows)
{
var obj = (IDictionary<string, object>)new ExpandoObject();
foreach (DataColumn col in dt.Columns)
{
obj.Add(col.ColumnName, row[col.ColumnName]);
}
result.Add(obj);
}
WebGrid grid = new WebGrid(Model, canPage: true, rowsPerPage: 15);
然后在视图中您可以使用:
@grid.GetHtml(htmlAttributes: new { id = "empTable" },
tableStyle: "table table-striped table-hover",
headerStyle: "header",
alternatingRowStyle: "alt",
selectedRowStyle: "select",
columns: grid.Columns(
grid.Column("col1name", "Column title"),
grid.Column("col2name", "Column2 title")
))
其中grid是您的WebGrid grid
变量。
答案 1 :(得分:0)
我不得不使用DataTable,因为数据来自第三方代码,通过DataTable。我在让WebGrid检测/反映添加到DataTable中的列时遇到了问题。根据mrfazolka的答案转换为动态列表。我最终把它变成了静态方法:
public static List<dynamic> DataTable2List(DataTable dt)
{
var list = new List<dynamic>();
foreach (DataRow row in dt.Rows)
{
var obj = (IDictionary<string, object>) new ExpandoObject();
foreach (DataColumn col in dt.Columns)
{
obj.Add(col.ColumnName, row[col.ColumnName]);
}
list.Add(obj);
}
return list;
}