答案 0 :(得分:2)
付款人名单不固定。这个付款人的数量取决于 系统中可用的付款人。
首先尝试使用数据透视表从数据库中检索数据。 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);
}
}
}
}