Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 循环以读取C中datagridview的几行#_C#_Asp.net_Datagridview_Rows - Fatal编程技术网

C# 循环以读取C中datagridview的几行#

C# 循环以读取C中datagridview的几行#,c#,asp.net,datagridview,rows,C#,Asp.net,Datagridview,Rows,我有一个datagrid(grid_detail),因为现在我只读取了其中的一行,并使用下面的代码保存到数据库中 //number of columns actually in second dgv int col_no = grid_detail.ColumnCount; int row_no = grid_detail.RowCount - 1; int r = 0;

我有一个datagrid(grid_detail),因为现在我只读取了其中的一行,并使用下面的代码保存到数据库中

            //number of columns actually in second dgv
            int col_no = grid_detail.ColumnCount;
            int row_no = grid_detail.RowCount - 1; 
            int r = 0;



            //array to contain the values of the cells
            string[] col_value = new string[100];
            for (i = 0; i < col_no; i++) 
            {
                //fill in the Array with values from cells
                col_value[i] = Convert.ToString(grid_detail.Rows[0].Cells[i].Value);
            }
            //Build insert command 
            StringBuilder Q = new StringBuilder();
            Q.Append("INSERT INTO ");
            Q.Append("[Ref].[");
            Q.Append(_lstview_item);
            Q.Append("]");
            Q.Append(" VALUES");
            Q.Append("(");
            for (i = 0; i < col_no; i++)
            {
                Q.Append("'");
                if (string.IsNullOrEmpty(col_value[i]))
                {
                    x = false;
                    break;
                }
                else
                {
                    Q.Append(col_value[i]);
                    Q.Append("'");
                    Q.Append(",");
                    x = true;
                }
            }
            //removing last COMMA from loop
            if (col_no > 0)
            {
                Q.Length--;
            }
            Q.Append(")");
            query = Q.ToString();



            if (x == true)
            {
                //open connection to db and send query
                SqlConnection conn = new SqlConnection(cc.connectionString(cmb_dblist.Text));
                SqlCommand cmd_server = new SqlCommand(query);
                cmd_server.CommandType = CommandType.Text;
                cmd_server.Connection = conn;
                conn.Open();
                cmd_server.ExecuteNonQuery();
                conn.Close(); 
//第二个dgv中实际的列数
int col_no=网格细节.ColumnCount;
int row_no=grid_detail.RowCount-1;
int r=0;
//数组以包含单元格的值
字符串[]列值=新字符串[100];
对于(i=0;i0)
{
Q.长度--;
}
Q.追加(“)”;
query=Q.ToString();
如果(x==true)
{
//打开与数据库的连接并发送查询
SqlConnection conn=新的SqlConnection(cc.connectionString(cmb_dblist.Text));
SqlCommand cmd_server=新的SqlCommand(查询);
cmd_server.CommandType=CommandType.Text;
cmd_server.Connection=conn;
conn.Open();
cmd_server.ExecuteNonQuery();
康涅狄格州关闭();
然而,我的要求是,我现在读取多行z网格并保存到数据库中。 我尝试使用for循环来计算行数,如

for (r=0;r<row_no;r++)
{

/////CODES ABOVE PASTED HERE

}

对于(r=0;r我假设您根据网格详细行数设置了
行号
,然后进行以下更改和测试

for (int r=0; r< grid_detail.RowCount; r++)
{
    // your code...
    //int r = 0; comment this line 
    // your code...
    //.............
            for (i = 0; i < col_no; i++) 
            {
                //fill in the Array with values from cells
                col_value[i] = Convert.ToString(grid_detail.Rows[r].Cells[i].Value); // use row r 
            }
    //.............
    // your code...

}
for(int r=0;r
但我会把你的代码重新分解到下面

foreach (GridViewRow row in GridView1.Rows)
{
    string sql = GenerateSql(row);
    if (!string.IsNullOrEmpty(sql))
        ExecuteNonQuery(sql);
}
private void ExecuteNonQuery(string query)
{
    using (SqlConnection conn = new SqlConnection(connectionString))
    using (SqlCommand cmd_server = new SqlCommand(query, conn))
    {
        conn.Open();
        cmd_server.ExecuteNonQuery();
    }
}

private string GenerateSql(GridViewRow row)
{
    var values = row.Cells.Cast<TableCell>().Select(x => x.Text).ToArray();
    if (values.Any(string.IsNullOrEmpty))
    {
        return string.Empty;
    }
    var sql = string.Format("INSERT INTO  [Ref].[{0}] VALUES ({1})", _lstview_item, string.Join(",", values));

    return sql;    

}
foreach(GridView1.Rows中的GridViewRow行)
{
字符串sql=GenerateSql(行);
如果(!string.IsNullOrEmpty(sql))
ExecuteOnQuery(sql);
}
私有void ExecuteNonQuery(字符串查询)
{
使用(SqlConnection conn=newsqlconnection(connectionString))
使用(SqlCommand cmd_server=newsqlcommand(query,conn))
{
conn.Open();
cmd_server.ExecuteNonQuery();
}
}
私有字符串生成器SQL(GridViewRow行)
{
var values=row.Cells.Cast().Select(x=>x.Text.ToArray();
if(values.Any(string.IsNullOrEmpty))
{
返回字符串。空;
}
var sql=string.Format(“插入[Ref].[0}]值({1})”,_lstview_项,string.Join(“,”,值));
返回sql;
}

我假设您根据网格详细行数设置了
行号
,然后执行以下更改和测试

for (int r=0; r< grid_detail.RowCount; r++)
{
    // your code...
    //int r = 0; comment this line 
    // your code...
    //.............
            for (i = 0; i < col_no; i++) 
            {
                //fill in the Array with values from cells
                col_value[i] = Convert.ToString(grid_detail.Rows[r].Cells[i].Value); // use row r 
            }
    //.............
    // your code...

}
for(int r=0;r
但我会把你的代码重新分解到下面

foreach (GridViewRow row in GridView1.Rows)
{
    string sql = GenerateSql(row);
    if (!string.IsNullOrEmpty(sql))
        ExecuteNonQuery(sql);
}
private void ExecuteNonQuery(string query)
{
    using (SqlConnection conn = new SqlConnection(connectionString))
    using (SqlCommand cmd_server = new SqlCommand(query, conn))
    {
        conn.Open();
        cmd_server.ExecuteNonQuery();
    }
}

private string GenerateSql(GridViewRow row)
{
    var values = row.Cells.Cast<TableCell>().Select(x => x.Text).ToArray();
    if (values.Any(string.IsNullOrEmpty))
    {
        return string.Empty;
    }
    var sql = string.Format("INSERT INTO  [Ref].[{0}] VALUES ({1})", _lstview_item, string.Join(",", values));

    return sql;    

}
foreach(GridView1.Rows中的GridViewRow行)
{
字符串sql=GenerateSql(行);
如果(!string.IsNullOrEmpty(sql))
ExecuteOnQuery(sql);
}
私有void ExecuteNonQuery(字符串查询)
{
使用(SqlConnection conn=newsqlconnection(connectionString))
使用(SqlCommand cmd_server=newsqlcommand(query,conn))
{
conn.Open();
cmd_server.ExecuteNonQuery();
}
}
私有字符串生成器SQL(GridViewRow行)
{
var values=row.Cells.Cast().Select(x=>x.Text.ToArray();
if(values.Any(string.IsNullOrEmpty))
{
返回字符串。空;
}
var sql=string.Format(“插入[Ref].[0}]值({1})”,_lstview_项,string.Join(“,”,值));
返回sql;
}