将数据绑定到网格视图

Bind data to grid views

我有以下格式的查询结果集,

并且我希望使用数据表或 Gridview 中的任何其他选项以下面的格式显示上面的查询结果。

谁能帮帮我。

Payer's list are not fixed. This payers are depends on number of payers available in the system.

首先尝试使用数据透视列从数据库中检索数据。 SQL DEMO

然后使用该数据动态绑定 GridView。 根据动态创建的列将网格与 TemplateField 绑定:

protected void bindgrid()
{
    con.Open();

    using (SqlDataAdapter sqd = new SqlDataAdapter("selectdata", con)) // here selectdata is my stored procedure in SQL Server
    {
        DataTable dt = new DataTable();
        sqd.Fill(dt);

        ViewState["data"] = dt;

        for (int j = 1; j < dt.Columns.Count; j++)
        {
            TemplateField tfield = new TemplateField();
            tfield.HeaderText = "Payers"+j;
            grid1.Columns.Add(tfield);
        }

        grid1.DataSource = dt;
        grid1.DataBind();
    }

    con.Close();
}

将 CheckBox 绑定到那些值为 1,0 或 null 的列

protected void updategrid()
{
        for(int k = 0; k < grid1.Rows.Count; k++)
        {
            DataTable dtl = (DataTable)ViewState["data"];

            for (int j = 1; j < dtl.Columns.Count; j++)
            {
                if (dtl.Rows[k][j].ToString() == "1")
                {
                    CheckBox ch = new CheckBox();
                    ch.ID = "checkbox" + j;
                    ch.Checked = true;
                    grid1.Rows[k].Cells[j].Controls.Add(ch);
                }
                else if (dtl.Rows[k][j].ToString() == "0" || dtl.Rows[k][j].ToString() == "" || dtl.Rows[k][j].ToString() == null)
                {
                    CheckBox ch = new CheckBox();
                    ch.ID = "checkbox" + j;
                    ch.Checked = false;
                    grid1.Rows[k].Cells[j].Controls.Add(ch);
                }
            }
        }
    }