本帖最后由 sgrrzbc 于 2011-03-11 08:02:03 编辑

解决方案 »

  1.   

    access里没提供行号,把数据都查询出来,集合的索引就是行号了...
      

  2.   

    自己循环插入一列ID数据到DataTable,然后在绑定。
      

  3.   


    /// <summary> 
    /// 给已有DataTable的首列加上序号列
    /// </summary>
    /// <param name="srcTable">源数据表</param>
    /// <returns>结果数据表</returns>
    private DataTable GetDataTable(DataTable srcTable)
    {
        DataTable dstntnTable = new DataTable();
        dstntnTable.Columns.Add("Id", typeof(Int32));
        for (int i = 0; i < srcTable.Columns.Count; i++)
            dstntnTable.Columns.Add(srcTable.Columns[i].ColumnName, srcTable.Columns[i].DataType);
        int srcColCount = srcTable.Columns.Count;
        int srcRowCount = srcTable.Rows.Count;
        int dstntnRowCount = 0;
        for (int j = 0; j < srcRowCount; j++)
        {
            DataRow newRow = dstntnTable.NewRow();
            newRow[0] = (++dstntnRowCount);
            for (int k = 0; k < srcColCount; k++)
                newRow[k + 1] = srcTable.Rows[j][k];
            dstntnTable.Rows.Add(newRow);
        }
        return dstntnTable;
    }
     
    /// <summary>
    /// 取出指定数据表中指定列数据并在首列加上编号列
    /// </summary>
    /// <param name="srcTable">源数据表</param>
    /// <param name="para">需要取出源数据表的列名</param>
    /// <returns>结果数据表</returns>
    private DataTable GetDataTable(DataTable srcTable, params string[] para)
    {
        DataTable dstntnTable = new DataTable();
        dstntnTable.Columns.Add("Id", typeof(Int32));
        for (int i = 0; i < para.Length; i++)
            dstntnTable.Columns.Add(para[i], srcTable.Columns[para[i]].DataType);
        int srcRowCount = srcTable.Rows.Count;
        int dstntnRowCount = 0;
        for (int j = 0; j < srcRowCount; j++)
        {
            DataRow newRow = dstntnTable.NewRow();
            newRow["Id"] = (++dstntnRowCount);
            for (int k = 0; k < para.Length; k++)
                newRow[para[k]] = srcTable.Rows[j][para[k]];
            dstntnTable.Rows.Add(newRow);
        }
        return dstntnTable;
    }