返されるデータテーブルに従ってGridViewとその列を動的に作成したいとします。だから、私は、ViewDataを介してaspxファイルにdatatableを返し、GridViewテンプレートを作成するdatatableの列を繰り返します。次に、aspxでC#を使用して、DataViewをGridViewにバインドします。しかし、私がaspxファイルでGridViewを取得しようとすると、エラーメッセージ "名前XXXは現在のコンテキストに存在しません"が表示されます。私がしたいことを達成するための他の方法?ASP.Net MVC - 動的にGridViewを作成し、それをaspxファイルにバインドする
コントローラ
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(); %>
<% } %>
GridViewのAutoGeneratedColumn = Trueを直接設定して、Databaseが持つ列を自動的に作成することができます。 –