0

我已经在这里问过这个问题: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 />";

            }

    }
4

1 回答 1

0

您可以使用GridView 的RowDataBound事件。

在 RowDataBound 事件中,您可以操作每个单元格的数据。例如,将图像插入单元格。

但是,您不能隐藏整行。如果您不想显示一行,则需要在 PivotTable 方法中实现该逻辑。

于 2013-03-26T15:15:37.567 回答