datagrid中显示的是由几个表连接查询出的数据(主表有主键值),不能用SqlCommandBuilder自动生成,那该怎么样才能更新到主表中呢?

解决方案 »

  1.   

    要么你单独把多个表读进DataSet,再加上DataRelation,要么就手动更新。
      

  2.   

    手动怎么更新呢?去遍历datagrid 还是dataset,遍历语句该怎么写呢?
      

  3.   

    public bool TY_DataSet(ref SqlConnection myConn,string st11, ref DataSet ds)
    {
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand= new SqlCommand(st11,myConn);
    try
    {
    da.Fill(ds, "TY"); }
    catch
    {
    return false;
    }
    return true;
    } public  void button7_Click_1(object sender, System.EventArgs e)
    {
    string sql="select *  from dx_A2weijiean";
    DataSet ds_1=new DataSet();
    MySchedule DaySchedule = new MySchedule();
    if(!DaySchedule.TY_DataSet(ref myConn,sql,ref ds_1))
    MessageBox.Show("加载error!!!");
    this.dataGrid3.SetDataBinding(ds_1,"TY");
    } private void button8_Click_1(object sender, System.EventArgs e)
    {
    for(int i=0;i<ds_1.Tables[0].Rows.Count;i++) {

    } 请问怎么去遍历dataset呢?我填充的是一个视图,由几个表连接生成的,填充dataset后马上去遍历没问题,但如果在另外一个按钮(button8_Click)去访问就读取不到dataset,把填充dataset的按钮加上public修饰符也不行,这该怎么办?
      

  4.   

    DataSet ds_1=new DataSet();
    这一行 ds_1 = new DataSet();
    然后给类加上
    private DataSet ds_1;那样在void button7_Click_1里不就能访问到ds_1了吗?
      

  5.   

    加了private DataSet ds_1;后,void button8_Click能访问到ds_1,能够自动生成代码,但运行时button8中的:for(int i=0;i<ds_1.Tables[0].Rows.Count;i++) 中断,显示信息为:  未处理的“System.NullReferenceException”类型的异常出现在smartSchedule.exe中。
    其他信息:未将对象引月设置到对象的实例。
    这又该怎么办?
      

  6.   

    这的确是个问题, 比如datagrid里显示出来的是存储过程传过来的数据, 你怎么办?让DBA写更新的SP, 你手动更新吧.
      

  7.   

    按button7后再按button8,
    要么在button8里先测试ds_1是否为null,如果为null就提示一下,或什么都不做。对了。
    button7_Click里的
    DataSet ds_1=new DataSet();
    改成ds_1 = new DataSet()了吗?
      

  8.   

    把 for(int i=0;i<ds_1.Tables[0].Rows.Count;i++) 移到button7_Click里一切正常,让它逐个显示字段都正常,但为什么在button8_Click里就不行呢?ds_1是在窗体代码开头部分定义的, button7_Click中使用都没问题的啊。
      

  9.   

    这的确是个问题, 比如datagrid里显示出来的是存储过程传过来的数据, 你怎么办?让DBA写更新的SP, 你手动更新吧.
    SP我自己会写,谁能教教我如何在button8_Click里面遍历ds_1。
      

  10.   

    我再请教一下怎么去遍历datagrid,手动更新的话遍历datagrid和遍历dataset效果一样吧?