如何在datatable中添加一序號列,編號從1依次遞增,並且在第一列?
/// <summary>
/// 在DataTable中添加一序號列,編號從1依次遞增
/// </summary>
/// <param >DataTable</param>
/// <returns></returns>
private DataTable AddSeriNumToDataTable(DataTable dt)
{
//需要返回的值
DataTable dtNew;
if (dt.Columns.IndexOf("序號") >= 0)
{
dtNew = dt;
}
else //添加一序號列,並且在第一列
{
int rowLength = dt.Rows.Count;
int colLength= dt.Columns.Count;
DataRow[] newRows = new DataRow[rowLength];
dtNew = new DataTable();
//在第一列添加“序號”列
dtNew.Columns.Add("序號");
for (int i = 0; i < colLength; i++)
{
dtNew.Columns.Add(dt.Columns[i].ColumnName);
//復制dt中的數據
for (int j = 0; j < rowLength; j++)
{
if (newRows[j] == null)
newRows[j] = dtNew.NewRow();
//將其他數據填充到第二列之后,因為第一列為新增的序號列
newRows[j][i+1] = dt.Rows[j][i];
}
}
foreach (DataRow row in newRows)
{
dtNew.Rows.Add(row);
}
}
//對序號列填充,從1遞增
for (int i = 0; i < dt.Rows.Count; i++)
{
dtNew.Rows[i]["序號"] = i + 1;
}
return dtNew;
}
private DataTable dt;
private void Form1_Load(object sender, EventArgs e)
{
dt = new DataTable();
dt.Columns.Add("名稱");
dt.Columns.Add("價格");
dt.Rows.Add("白菜", 12);
dt.Rows.Add("白菜", 12);
dt.Rows.Add("白菜", 12);
dt.Rows.Add("白菜", 12);
dt.Rows.Add("白菜", 12);
DataTable dt2 = AddSeriNumToDataTable(dt);
dataGridView1.DataSource = dt2;
}