现有gridview数据源,其数据如下(因为代码列是由其他功能配置出来的,真正保存在表里的可能是ID,但显示的为代码):
名称   |代码
Nokia     1(这值实际是ID)
HTC       2

其前台处理后显示为:
名称   |代码
Nokia     N95(真正的代码是通过关系表生成的动态下拉来绑定显示的数据)
HTC       1032

现我现实现的就是将前台显示的数据转换成一个表,以方便其他的操作,求大虾指点。

解决方案 »

  1.   

    我是用Dev控件的,使用ExportToXlsx可以导出正确的Excel。要取得的表是另作他用。
      

  2.   


    DataTable dt = gridControl_ABC.DataSource as DataTable;
      

  3.   


    /// <summary>
    /// 从GridView的数据生成DataTable
    /// </summary>
    /// <param name="gv">GridView对象</param>
    public static DataTable GridView2DataTable(GridView gv)
    {
        DataTable table = new DataTable();
        int rowIndex = 0;
        List<string> cols = new List<string>();
        if (!gv.ShowHeader && gv.Columns.Count == 0)
        {
            return table;
        }
        GridViewRow headerRow = gv.HeaderRow;
        int columnCount = headerRow.Cells.Count;
        for (int i = 0; i < columnCount; i++)
        {
            string text = GetCellText(headerRow.Cells[i]);
            cols.Add(text);
        }
        foreach (GridViewRow r in gv.Rows)
        {
            if (r.RowType == DataControlRowType.DataRow)
            {
                DataRow row = table.NewRow();
                int j = 0;
                for (int i = 0; i < columnCount; i++)
                {
                    string text = GetCellText(r.Cells[i]);
                    if (!String.IsNullOrEmpty(text))
                    {
                        if (rowIndex == 0)
                        {
                            string columnName = cols[i];
                            if (String.IsNullOrEmpty(columnName))
                            {
                                continue;
                            }
                            if (table.Columns.Contains(columnName))
                            {
                                continue;
                            }
                            DataColumn dc = table.Columns.Add();
                            dc.ColumnName = columnName;
                            dc.DataType = typeof(string);
                        }
                        row[j] = text;
                        j++;
                    }
                }
                rowIndex++;
                table.Rows.Add(row);
            }
        }
        return table;
    }
      

  4.   


    也只能这样,遍历gridview,遍历出来的数据重新构造成你想要的table,具体代码懒得写了,可以参考楼上的
      

  5.   

    我也是百度出来给LZ的,思路就是遍历自己拼table,我也懒的写
      

  6.   

    这个是微软自带的GridView才可以这样访问单元格吧~DEV的控件是不可以的~
      

  7.   

    如果这个是微软版的gridview那你就写一个dev版的吧,思路都一样,哪里有区别就改一下,试试吧
      

  8.   

    思路就是导出为DataTable
    转换好内容再重新绑定回控件.
    dev是什么东东.不能历遍的控件还要它做什么.
      

  9.   

    楼主 自己转换一下吧。dev出来的数据源的datatable