我用一个gridview做一个一次性更新其中的一列所有行(是float型)
并采用简单的DAL+BLL来做。
gridview数据例子depart name salary
aa aa 11.03
bb cc 22.14
...zz zzc 55.01以上salary是模板列,全为textbox1,其它列为只读现小弟的思路是在gridview外面放一个button,命名为更新按钮,作用是点击它会全部更新所有行的salary.
以上depart,name,salary是数据库中某个表table中的某个字段,当然它也有id(自动增值1)主键,并且
我已经将gridview的DataKeyNames指定为id.Button(更新)的代码
protected void Button3_Click(object sender, EventArgs e)
{
foreach (GridViewRow gvr in GridView1.Rows)
{
if (gvr.RowType == DataControlRowType.DataRow)
{
Int32 i = Convert.ToInt32(((TextBox)gvr.Cells[10].FindControl("TextBox4")).Text);
Int32 kh_jj = Convert.ToInt32(((TextBox)gvr.Cells[4].FindControl("TextBox1")).Text);
BLL b = new BLL();
b.updateBLL_JJ(i, kh_jj, gzyear, gzmonth, leibie);
}
}
}BLL层: public void updateBLL_JJ(Int32 i,float kh_jj,string gzyear,string gzmonth,string leibie)
{
DAL a = new DAL();
DataSet ds = a.getDAL_JJ(gzyear,gzmonth,leibie);
ds.Tables["JiangJianAll"].Rows[i]["kh_jj"] = kh_jj; a.updateDAL_JJ(ds);
}DAL层:
public void updateDAL_JJ(DataSet ds)
{
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from JiangJinAll", conn);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds, "JiangJinAll");
conn.Close();
}
小弟愚民,有个问题想请教。
1、如何获取到gridview的DataKeyNames(逐行获取)
2、在DAL里update到数据库时,如何让数据库知道update的数据是对应哪个ID?
(语文学得不好,我的意思是就算我传个主键的ID值过去,但DAL里的update没有 像where id=@id,如何匹配更新)
并采用简单的DAL+BLL来做。
gridview数据例子depart name salary
aa aa 11.03
bb cc 22.14
...zz zzc 55.01以上salary是模板列,全为textbox1,其它列为只读现小弟的思路是在gridview外面放一个button,命名为更新按钮,作用是点击它会全部更新所有行的salary.
以上depart,name,salary是数据库中某个表table中的某个字段,当然它也有id(自动增值1)主键,并且
我已经将gridview的DataKeyNames指定为id.Button(更新)的代码
protected void Button3_Click(object sender, EventArgs e)
{
foreach (GridViewRow gvr in GridView1.Rows)
{
if (gvr.RowType == DataControlRowType.DataRow)
{
Int32 i = Convert.ToInt32(((TextBox)gvr.Cells[10].FindControl("TextBox4")).Text);
Int32 kh_jj = Convert.ToInt32(((TextBox)gvr.Cells[4].FindControl("TextBox1")).Text);
BLL b = new BLL();
b.updateBLL_JJ(i, kh_jj, gzyear, gzmonth, leibie);
}
}
}BLL层: public void updateBLL_JJ(Int32 i,float kh_jj,string gzyear,string gzmonth,string leibie)
{
DAL a = new DAL();
DataSet ds = a.getDAL_JJ(gzyear,gzmonth,leibie);
ds.Tables["JiangJianAll"].Rows[i]["kh_jj"] = kh_jj; a.updateDAL_JJ(ds);
}DAL层:
public void updateDAL_JJ(DataSet ds)
{
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from JiangJinAll", conn);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds, "JiangJinAll");
conn.Close();
}
小弟愚民,有个问题想请教。
1、如何获取到gridview的DataKeyNames(逐行获取)
2、在DAL里update到数据库时,如何让数据库知道update的数据是对应哪个ID?
(语文学得不好,我的意思是就算我传个主键的ID值过去,但DAL里的update没有 像where id=@id,如何匹配更新)
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView row = (DataRowView)e.Row.DataItem;
string strID = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();//逐行获取得ID
Int32 kh_jj = Convert.ToInt32(((TextBox)gvr.Cells[4].FindControl("TextBox1")).Text);
//這兩個對應的值已經找到,可以new 一個 datetable ,把grid所有id,和對應的salary的值存到里面去
//把datatable傳進updateBLL_JJ方法里,for循環這個table 根據id修改salary的值
}
}
應該是 Int32 kh_jj = Convert.ToInt32(((TextBox)e.Row.Cells[4].FindControl("TextBox1")).Text);