【发布时间】:2017-03-14 07:19:31
【问题描述】:
我想根据返回的数据表动态创建 GridView 及其列。所以,我通过 ViewData 将数据表返回到 aspx 文件,并迭代数据表的列以创建一个 GridView 模板。然后,在 aspx 中使用 C# 将数据表绑定到 GridView。但是当我尝试在 aspx 文件中获取 GridView 时,会显示错误消息“当前上下文中不存在名称 XXX”。还有其他方法可以实现我想做的吗?
以下是我的源代码:
控制器
public ActionResult gridViewPage() {
DataTable dt = runSqlQueryToReturnADataTable();
ViewData["DT"] = dt;
ViewData["DisplayMode"] = "Grid";
return View();
}
ASPX 文件
<% if ("Grid".Equals(ViewData["DisplayMode"])) { %>
<asp:GridView ID="gridViewForQuery" runat="server">
<Columns>
<% foreach (System.Data.DataColum col in (ViewData["DT"] as System.Data.DataTable).Columns) %>
<asp:BoundField DataField="<%: col.ColumnName %>"/>
</Columns>
</asp:GridView>
<% gridViewForQuery.DataSource = (ViewData["DT"] as System.Data.DataTable); gridViewForQuery.DataBind(); %>
<% } %>
【问题讨论】:
-
你可以直接设置datatable,设置GridView的AutoGeneratedColumn=True,它会自动创建Database有的列。
标签: c# asp.net asp.net-mvc gridview