我已经在这里问过这个问题:Table with dynamic number of columns to show
但我对此还有几个问题。
1.我有一个数据表,其中包含保险名称、计划类型、保费等数据……”每一行
在我的前端,我需要显示:
Insurance Name HealthNet Harvard UniCare
Plan Type HMO PPO HMO
Premium 100 150 200
为此,我使用以下方法来透视数据表并将其分配给gridview)
private DataTable PivotTable(DataTable origTable){
DataTable newTable = new DataTable();
DataRow dr = null;
//Add Columns to new Table
for (int i = 0; i <= origTable.Rows.Count; i++)
{
newTable.Columns.Add(new DataColumn(origTable.Columns[i].ColumnName, typeof(String)));
}
//Execute the Pivot Method
for (int cols = 0; cols < origTable.Columns.Count; cols++)
{
dr = newTable.NewRow();
for (int rows = 0; rows < origTable.Rows.Count; rows++)
{
if (rows < origTable.Columns.Count)
{
dr[0] = origTable.Columns[cols].ColumnName; // Add the Column Name in the first Column
dr[rows + 1] = origTable.Rows[rows][cols];
}
}
newTable.Rows.Add(dr); //add the DataRow to the new Table rows collection
}
return newTable;
}
和数据绑定如下:
DataTable tempTable = PivotTable(actualDataTable);
myGridView.DataSource = tempTable;
myGridView.DataBind();
现在我的输出看起来像:
Insurance Name HealthNet Harvard UniCare
Plan Type HMO PPO HMO
Premium 100 150 200
但现在我的网格视图显示了数据源中的所有值。我想自定义我的网格视图外观,以便我可以将图像插入每个保险名称旁边的表格行并隐藏一些行。
注意:我不仅限于gridview。我对任何控制都很好,但是数据应该是动态的,而不是硬编码。
谢谢
编辑:
我可以根据列数循环而不是跟随以在每个保险名称旁边显示图像。
protected void myGridview_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[1].Text = "<img src=../images/" + e.Row.Cells[1].Text + ".png />";
e.Row.Cells[2].Text = "<img src=../images/" + e.Row.Cells[2].Text + ".png />";
}
}