Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在sql表的for循环中添加datatable中的行_C#_Asp.net_Sql Server 2012 - Fatal编程技术网

C# 如何在sql表的for循环中添加datatable中的行

C# 如何在sql表的for循环中添加datatable中的行,c#,asp.net,sql-server-2012,C#,Asp.net,Sql Server 2012,我在asp.net网站中的c代码有问题 这是我的密码 mood = Session["feeling"].ToString(); DataTable dt2 = blrate.selectmood("selectmood", mood); DataTable dt3=new DataTable(); for (int k = 0; k < dt2.Rows.Count; k++) { dt3.Rows[k][0]= music.selectMusic("sel_musicname

我在asp.net网站中的c代码有问题

这是我的密码

mood = Session["feeling"].ToString();
DataTable dt2 = blrate.selectmood("selectmood", mood);
DataTable dt3=new DataTable();

for (int k = 0; k < dt2.Rows.Count; k++)
{
    dt3.Rows[k][0]= music.selectMusic("sel_musicname", Convert.toInt32(dt2.Rows[k][2]));
    dt3.Rows[k][1] = music.selectMusic("sel_musicUrl", Convert.ToInt32(dt2.Rows[k][2]));
}
GridView1.DataSource = dt3;
GridView1.DataBind(); 
我想在datatable中添加行,但它有eror

位置0中没有行

最终数据表必须有两列和k行。
我该怎么办

创建要为dt3存储的列数据,如dt3.columns.AddColumnName。 然后为datatabledt3创建行,如

for (int k = 0; k < dt2.Rows.Count; k++)
{
      DataRow row = dt3.NewRow();
      row[0]= music.selectMusic("sel_musicname", Convert.ToInt32(dt2.Rows[k][2]));
      row[1] = music.selectMusic("sel_musicUrl", Convert.ToInt32(dt2.Rows[k][2]));

      dt3.Rows.Add(row);
}

    GridView1.DataSource = dt3;
    GridView1.DataBind(); 
在您的情况下,dt3只是一个没有行和列的数据表,因此您需要先分配列,然后通过迭代上一个表来添加行。现在考虑下面的代码并尝试:

DataTable dt2 = blrate.selectmood("selectmood", mood);
DataTable dt3 = new DataTable();
dt3.Columns.Add("sel_musicname");
dt3.Columns.Add("sel_musicUrl");
for (int k = 0; k < dt2.Rows.Count; k++)
{
    DataRow dRow = dt3.NewRow();
    dRow[0] = music.selectMusic("sel_musicname", Convert.toInt32(dt2.Rows[k][2]));
    dRow[1] = music.selectMusic("sel_musicUrl", Convert.ToInt32(dt2.Rows[k][2]));
    dt3.Rows.Add(dRow);
}
GridView1.DataSource = dt3;

这是因为您的dt2.Rows.Count=0。使用调试器并检查dt2.Rows.Countno的值,该值不为空。dt2.rows.Count不是0。在哪里定义dt3的列?如果您不为dt3创建行,它们不会神奇地出现在dt3行集合中,因为您为不远处的行分配了一个值。我想在从sqlserver选择数据后创建dt3的列。在编写代码之前,请尝试理解一些基本概念。如果尚未定义数据表的结构,则无法将数据添加到数据表中。我指的是数据表的列以及每列的名称和类型、最终的大小和精度。我尝试了一下,但它有eror:找不到列0。是否在dt3中创建了列?