我的datatable
有1 row
,当然还有标题名columns
,
现在我想在datagridview
例如,datagridview
必须有2 columns
,其中一个rows
显示字幕名称,另一个显示datatable
的相关值
我尝试通过此代码执行此操作但它显示异常:
{"位置1没有行。"}
代码是:
public static void GetSelectedFeedsDetails(Form1 frm)
{
string StrCon = System.Configuration.ConfigurationManager.ConnectionStrings["FeedLibraryConnectionString"].ConnectionString;
OleDbConnection Connection = new OleDbConnection(StrCon);
OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from SelectedFeeds where ID=" + frm.SelectedFeedlistBox.SelectedValue, Connection);
DataTable OldDTable = new DataTable();
DataA.Fill(OldDTable);
DataTable NewDTable = new DataTable();
NewDTable.Columns.Add("Feild Name");
for (int i = 0; i < OldDTable.Rows.Count; i++)
{
NewDTable.Columns.Add();
}
for (int i = 0; i < OldDTable.Columns.Count; i++)
{
DataRow NewRow = NewDTable.NewRow();
NewRow[0] = OldDTable.Columns[i].Caption;
for(int j = 0; j < OldDTable.Columns.Count; j++)
{
NewRow[j + 1] = OldDTable.Rows[j][i];
NewDTable.Rows.Add(NewRow);
}
}
frm.dataGridView1.DataSource = NewDTable;
}
我该怎么办?
答案 0 :(得分:1)
正如OhBeWise所说,答案是:
DataTable NewDTable = new DataTable();
NewDTable.Columns.Add("Field Name");
for (int i = 0; i < OldDTable.Rows.Count; i++)
{
NewDTable.Columns.Add();
}
for (int i = 0; i < OldDTable.Columns.Count; i++)
{
DataRow NewRow = NewDTable.NewRow();
NewRow[0] = OldDTable.Columns[i].Caption;
for (int j = 0; j < OldDTable.Rows.Count; j++)
{
NewRow[j + 1] = OldDTable.Rows[j][i];
}
NewDTable.Rows.Add(NewRow);
}