【ASP.NET・C#】DBから取得した値をテーブルにいれる
【今回の紹介】
DBから取得した値をテーブルに流しこむところまで
【内容】
DBからデータを取得し、テーブルに流し込む処理
処理の流れ
1.DBからデータを取得
2.Datatableに流し込む
3.テーブルのRowを作成
4.テーブルのcellを作成
5.3と4を取得したたテーブル分繰り返す
■動的にテーブルを取得するときの注意
1.htmlのテーブルを使う
webコントロールのテーブルを使わず、htmlのテーブルにサーバ側にポストバックする設定を書くほうが簡単
Table、TableRow、TableCell の各 Web サーバー コントロールの概要
2.sqlへのパラメータ
https://msdn.microsoft.com/ja-jp/library/system.data.sqlclient.sqldataadapter.selectcommand%28v=vs.110%29.aspx
【参考ソース】
<table style="width: auto" id="table2" runat="server" ></table>
protected void PageInit() { string category = Request.QueryString["par"]; DataTable dt = new DataTable(); string sql = "select * from Table where category = @category"; string con = ConfigurationManager.AppSettings["con.str"]; SqlDataAdapter da = new SqlDataAdapter(sql , con); da.SelectCommand.Parameters.Add("category", SqlDbType.VarChar).Value = category; dt.Columns[0].ColumnName = "No"; dt.Columns[1].ColumnName = "名前"; dt.Columns[2].ColumnName = "カテゴリー"; createTable(dt); } protected void createTable(DataTable dt) { Table1.Rows.Clear(); for (int i = 0; i < dt.Rows.Count; i++) { HtmlTableRow row = new HtmlTableRow(); for (int k = 0; k < dt.Columns.Count; k++) { HtmlTableCell cell = new HtmlTableCell(); switch(k){ case 0: cell.InnerText = (string)dt.Rows[i][0]; break; case 1: cell.InnerText = (string)dt.Rows[i][1]; break; case 2: System.Web.UI.WebControls.Button bt = new Button(); bt.Text = "削除"; bt.OnClientClick = ("alert('test')"); cell.Controls.Add(bt); break; } row.Cells.Add(tc); } table2.Rows.Add(row); } }