public void xianshiall()   //显示dataset和dv的数据到dataGridview中。
        {
           //注明:datado是自己定义的用于处理数据库的类,getdataset()是获得一个DataSet的方法。
             Form1.datado datado1 = new Form1.datado();
             DataSet dss = datado1.getdataset("select * from [user]");
               DataView dv = new DataView();
             dv.Table=dss.Tables[0];
             this.dataGridView1.DataSource = dv;
             textBoxbianhao.DataBindings.Add("text", dv, "编号"); //绑定dv的数据到textBox1。
        }
        private void Form2_Load(object sender, EventArgs e)
        {
            xianshiall(); //窗体启动时调用xianshiall(),在dataGridView1中显示数据,并且绑定textBoxbianhao。
        }        private void button2_Click(object sender, EventArgs e)
        {
            xianshiall(); //这个按钮是用于刷新,因在本窗体中还有其他处理数据库的按钮,比如增加纪录,处理完需要在dataGridView1中重新显示最新的数据。
        }
结果:在执行button2_Click按钮时爆出以下错误,请教高手,这是为什么呀?难道绑定只能绑一次吗?
  
  这将导致集合中的两个绑定绑定到同一个属性。
  参数名: binding

解决方案 »

  1.   

    绑定两次了。。可以在按钮事件中增加一个方法,清除掉上次的绑定的数据,再执行xianshiall(); 
    你试试看行不。
     
      

  2.   

    绑定函数先清空TEXTBOX咯!
    textBoxbianhao.text = string.Empty;
      

  3.   

     private void Form2_Load(object sender, EventArgs e) 
      { 
        xianshiall(); //窗体启动时调用xianshiall(),在dataGridView1中显示数据,并且绑定textBoxbianhao。 
      } 
      你这个地方就这样完了吗?窗体启动时先调用xianshiall和dataGridView1方法,然后调用adapter对象的Fill方法获取数据。
          {
            this.xianshiall();
            this.xianshiall.dataGridView1(this.dataGridView1);
            dv=new DataTable();
            try
            {
               adapter.Fill(dt);
            } 
               catch(Exception ex)
            {
               MessageBox.Show(ex.Message);
            }
            this.dataGridView1.DataSource=dv;
          }private void button2_Click(object sender, EventArgs e) 

     xianshiall(); //这个按钮是用于刷新,因在本窗体中还有其他处理数据库的按钮,比如增加纪录,处理完需要在dataGridView1中重新显示最新的数据。 

    (问一下你的意思是把dataGridView的数据内容赋值到文本框显示吗)
     那你要添加dataGridView_CurrentCellChanged方法,用这个方法把选择的单元格内容赋值到文本框中显示
     {
        if(this.dataGridView1.CurrentCell !=null)
         {
             this.textBoxbianhao.Text=this.dataGridView1.CurrentCell.Value.ToString();
         }
     }
    添加一个刷新按钮的Click事件,在这个事件中调用adapter对象的update方法更新数据
     private void button2_Click(object sender, EventArgs e)
       {
            try
         {
              adapter.Update(dv);
              MessageBox.Show("更新成功");
         }
            catch(Exception ex)
          {
              MessageBox.Show(ex.Message);
          }
       }
      

  4.   

    public void xianshiall()   
    绑定前先清空就可以了.
      

  5.   

    不好意思,打快了,是调用xianshiall和dataGridView方法        this.xianshiall(); 
            this.xianshiall.dataGridView(this.dataGridView1); 
            dv=new DataTable(); 
      

  6.   

    首先感谢各位高手的回应,但1、2楼的说法太简单能否具体些?;3楼的方法我试过了在xianshi()方法中textBoxbianhao.DataBindings.Add("text", dv, "编号")语句之前加上textBoxbianhao.text = string.Empty结果还是不行报同样的错;尤其要感谢4楼的ouyangyanyue(美女?帅哥?)非常用心,但好像没有理解我的意思,在窗体启动时我不需要用adapter再fill了,在我form1中定义的datado的类包含了用adapter生成dataset的方法getdataset(),我下面把截图发上,请继续帮忙,谢谢!!
      

  7.   

    另外说明:绑定控键,是为了在dataGridView1中选择某行时,在绑定控键中的各个textbox显示对应的内容,
    “刷新显示”按钮就是button2
      

  8.   

    textBoxbianhao.DataBindings.Clear();
    textBoxbianhao.DataBindings.Add("text", dv, "编号"); //绑定dv的数据到textBox1。