【问题标题】:Updating multiple row in a gridview.更新网格视图中的多行。
【发布时间】:2013-08-24 13:56:45
【问题描述】:

我的以下代码运行良好...

protected void btnSubmit_Click(object sender, EventArgs e)
{
    for (int i = 0; i < grdView.Rows.Count; i++)
    {
        GridViewRow row = grdView.Rows[i];
        string trn = ((TextBox)row.Cells[0].FindControl("txtTrn")).Text;
        string remark = ((TextBox)row.Cells[1].FindControl("txtRemark")).Text;
        bool status = ((CheckBox)row.Cells[2].FindControl("ck")).Checked;
        string si = grdView.DataKeys[i].Value.ToString();

        clsDt.sqlCnn.Open();
        SqlCommand cmd = new SqlCommand("USP_MOD_MBRINCDTL", clsDt.sqlCnn);
        cmd.Parameters.Add(new SqlParameter("@ACTION", SqlDbType.VarChar, 20));
        cmd.Parameters.Add(new SqlParameter("@status", SqlDbType.Bit));
        cmd.Parameters.Add(new SqlParameter("@adm_trn", SqlDbType.VarChar, 100));
        cmd.Parameters.Add(new SqlParameter("@remark", SqlDbType.VarChar, 100));
        cmd.Parameters.Add(new SqlParameter("@si", SqlDbType.Int));
        cmd.Parameters["@ACTION"].Value = "UPDATE";
        cmd.Parameters["@status"].Value = status;
        cmd.Parameters["@adm_trn"].Value = trn;
        cmd.Parameters["@remark"].Value = remark;
        cmd.Parameters["@si"].Value = si;
        cmd.CommandType = CommandType.StoredProcedure;
        da=new SqlDataAdapter(cmd);
        ds = new DataSet();
        da.Fill(ds);
        clsDt.sqlCnn.Close();
    }
    BindGrid();
}

但连接在网格的行中多次打开和关闭... 有没有更好的方法巧妙地做到这一点...

【问题讨论】:

    标签: sql-server gridview stored-procedures


    【解决方案1】:

    为什么不直接返回一组中的所有数据,而不是遍历网格?

    如果做不到这一点,请将SqlCommand 创建和连接打开/关闭移出循环

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        SqlCommand cmd = new SqlCommand("USP_MOD_MBRINCDTL", clsDt.sqlCnn);
        cmd.Parameters.Add(new SqlParameter("@ACTION", SqlDbType.VarChar, 20));
        cmd.Parameters.Add(new SqlParameter("@status", SqlDbType.Bit));
        cmd.Parameters.Add(new SqlParameter("@adm_trn", SqlDbType.VarChar, 100));
        cmd.Parameters.Add(new SqlParameter("@remark", SqlDbType.VarChar, 100));
        cmd.Parameters.Add(new SqlParameter("@si", SqlDbType.Int));
        cmd.Parameters["@ACTION"].Value = "UPDATE";
        cmd.CommandType = CommandType.StoredProcedure;
        clsDt.sqlCnn.Open();
    
        for (int i = 0; i < grdView.Rows.Count; i++)
        {
            GridViewRow row = grdView.Rows[i];
            string trn = ((TextBox)row.Cells[0].FindControl("txtTrn")).Text;
            string remark = ((TextBox)row.Cells[1].FindControl("txtRemark")).Text;
            bool status = ((CheckBox)row.Cells[2].FindControl("ck")).Checked;
            string si = grdView.DataKeys[i].Value.ToString();
    
            cmd.Parameters["@status"].Value = status;
            cmd.Parameters["@adm_trn"].Value = trn;
            cmd.Parameters["@remark"].Value = remark;
            cmd.Parameters["@si"].Value = si;
            da=new SqlDataAdapter(cmd);
            ds = new DataSet();
            da.Fill(ds);
    
        }
        clsDt.sqlCnn.Close();
        BindGrid();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多