ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Asp.net] Repeater를 이용한 동적 컬럼바인딩
    Programming/ASP 2014. 2. 2. 19:29

     Repeater 에서 동적으로 컬럼 바인딩을 해야되는 경우, Literal을 이용하여 처리할 수 있다. 


    <div>

        <table>

    <tr>

       <th>Id </th>

       <th>Name</th>

       <th>Marks1</th>

       <th>Marks2</th>

       <th>Matks3</th>

    </tr>

    <asp:Repeater ID="rptDemo" runat="server">

       <ItemTemplate>

    <asp:Literal ID="rptContents" runat="server" OnDataBinding="rptContents_DataBinding"></asp:Literal>

       </ItemTemplate>

    </asp:Repeater>

        </table>

    </div>


    private int Cnt = 0;
    protected void rptContents_DataBinding(object sender, EventArgs e)
    {
        Literal lt = (Literal)sender;
        _repeaterCount++;
        if (_repeaterCount % _repeaterTotalColumn == 1)
    	lt.Text = "";
        lt.Text += string.Format("{0}", Eval("ID").ToString());
        lt.Text += string.Format("{0}", Eval("NAME").ToString());
        lt.Text += string.Format("{0}", Eval("MARKS1").ToString());
        lt.Text += string.Format("{0}", Eval("MARKS2").ToString());
        lt.Text += string.Format("{0}", (string.Equals(Cnt, 1) ? Eval("MARKS3").ToString() : Eval("MARKS4").ToString()));
        lt.Text += "";
    }
    
    private DataTable CreateDataTable()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("ID", typeof(string)));
        dt.Columns.Add(new DataColumn("NAME", typeof(string)));
        dt.Columns.Add(new DataColumn("MARKS1", typeof(string)));
        dt.Columns.Add(new DataColumn("MARKS2", typeof(string)));
        dt.Columns.Add(new DataColumn("MARKS3", typeof(string)));
        dt.Columns.Add(new DataColumn("MARKS4", typeof(string)));
    
    
        DataRow row = dt.NewRow();
        row["ID"] = "1"; row["NAME"] = "홍길동"; row["MARKS1"] = "1-1"; row["MARKS2"] = "1-2"; row["MARKS3"] = "1-3"; row["MARKS4"] = "1-4";
        dt.Rows.Add(row);
        row = dt.NewRow();
        row["ID"] = "2"; row["NAME"] = "홍길동"; row["MARKS1"] = "2-1"; row["MARKS2"] = "2-2"; row["MARKS3"] = "2-3"; row["MARKS4"] = "2-4";
        dt.Rows.Add(row);
        row = dt.NewRow();
        row["ID"] = "3"; row["NAME"] = "홍길동"; row["MARKS1"] = "3-1"; row["MARKS2"] = "3-2"; row["MARKS3"] = "3-3"; row["MARKS4"] = "3-4";
        dt.Rows.Add(row);
        row = dt.NewRow();
        row["ID"] = "4"; row["NAME"] = "홍길동"; row["MARKS1"] = "4-1"; row["MARKS2"] = "4-2"; row["MARKS3"] = "4-3"; row["MARKS4"] = "4-4";
        dt.Rows.Add(row);
        row = dt.NewRow();
        row["ID"] = "5"; row["NAME"] = "홍길동"; row["MARKS1"] = "5-1"; row["MARKS2"] = "5-2"; row["MARKS3"] = "5-3"; row["MARKS4"] = "5-4";
        dt.Rows.Add(row);
        row = dt.NewRow();
        row["ID"] = "6"; row["NAME"] = "홍길동"; row["MARKS1"] = "6-1"; row["MARKS2"] = "6-2"; row["MARKS3"] = "6-3"; row["MARKS4"] = "6-4";
        row = dt.NewRow(); 
        return dt;
    }
    


    Repeater를 DataBinding 하는 부분입니다. 

    ...

    rptDemo.DataSource = CreateDataTable();

    rptDemo.DataBinding();

    ... 


Designed by Tistory.