読者です 読者をやめる 読者になる 読者になる

FOR SE

文系の学部から新卒でメーカー系のSIerに就職。技術・スキルがないためブログを通して勉強。その後、IT業界の業界知識が活かせる人材業界に就職

このエントリーをはてなブックマークに追加

【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);
        }
    }
.hatena-module:nth-of-type(10) { background: transparent; } .hatena-module:nth-of-type(10) .hatena-module-title{ display: none; } .hatena-module:nth-of-type(10) .hatena-module-body { padding: 0; }