由于刚刚涉入C#,所以一些基本的问题还不是很清楚,发贴向论坛上的高手们请教请教:
WINFORM放了1个splitContainer,panel1里面放了1个bindingNavigator控件和1个textbox;panel2里面放了1个dataGridView控件。
想实现的功能是:鼠标点击dataGridView的1条记录,会把数据传到textbox里,bindingNavigator也会跟着显示是第几条记录;或者点击bindingNavigator上的“上1个”、“下一个”之类的按忸,textbox里面的数据会跟着变,而且dataGridView上的相应记录是被选中的!
望高手们指教,不求代码,只求解决问题的思路,当然如果有代码就更好拉,呵呵:)

解决方案 »

  1.   

    bindingNavigator和datagridview都绑定到同一个bindingsource上。
    textbox可以在设计时 设置DataBindings的tag和text属性,或者用代码
                byNameTextBox.DataBindings.Clear();
                byNameTextBox.DataBindings.Add("Text", bindingSource1, "ByName", true, DataSourceUpdateMode.OnPropertyChanged);
      

  2.   

    谢谢楼上的解答,如何让bindingNavigator和datagridview都绑定到同一个bindingsource上呢?
      

  3.   

    对应的改一下就行了:
    this.xt_qybBindingNavigator.BindingSource = this.xt_qybBindingSource;
    this.xt_qybDataGridView.DataSource = this.xt_qybBindingSource;
    this.mgsTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.xt_qybBindingSource, "mgs", true));//msg就是xt_qybBindingSource对应的列
      

  4.   

    谢谢高手们的解答,我还想请教一个问题:dataGridView直接绑定数据源,倒是简单快捷,那如果我自己手动为dataGridView添加数据,然后做一个bindingsource代码该怎么实现呢?
      

  5.   

    现在已经绑定,而且调试成功,接下来就是要把dataGridView当前选中的那一行数据,传递到一些textbox里面,请问诸如“this.mgsTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.xt_qybBindingSource, "mgs", true));”代码应该写在dataGridView哪个事件函数里面?
      

  6.   

    我刚刚将代码“this.mgsTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.xt_qybBindingSource, "mgs", true));”写在click事件里:结果出现这样的错误,“This causes two bindings in the collection to bind to the same property.”???
      

  7.   

    我刚刚将代码“this.mgsTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.xt_qybBindingSource, "mgs", true));”写在click事件里:结果出现这样的错误,“This causes two bindings in the collection to bind to the same property.”???
    -----------------------------------------------------------------------------------
    最好写在form_load里 如果写在click事件中 则需要在代码前加
    this.mgsTextBox.DataBindings.Clear();
      

  8.   

    TO→jiatong1981(末日之痕):
    谢谢你的解答,此问题解决,看来还是不懂得内部运行的机制!
    其次,我想请教一个问题:现在bindingNavigator和datagridview都已经数据绑定了,而且数据可以带回到textbox,那我接下来对数据进行增、删、改,该怎么做?
      

  9.   

    还是自己看msdn吧http://search.msdn.microsoft.com/search/Default.aspx?query=bindingNavigator&brand=msdn&locale=zh-cn&refinement=00&lang=zh-cn里面什么都有 数据导航 数据修改……
      

  10.   

    哪位高手指点一二:是直接获取数据用UPDATE语句进行更新,还是有什么更简单的方法?
      

  11.   

    都可以 看你自己的需要 没有既定模式以下一例使用CommandBuilder配合Adapter更新数据 注:使用CommandBuilder时数据库需要设置主键且主键信息必须包含在返回的数据集中private void Form1_Load(object sender, EventArgs e)
            {                                try
                {                DataSet ds1 = new DataSet();               
                    string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + @".\TestDoc\db1.mdb;";
                    OleDbConnection conn = new OleDbConnection(connstr);
                    string sqlstr = "select * from table1";
                    da = new OleDbDataAdapter(sqlstr, conn);
                    ds = new DataSet();
                    da.Fill(ds);                
                    OleDbCommandBuilder dcmdb = new OleDbCommandBuilder(da);
                    this.dataGridView1.DataSource = ds.Tables[0]; 
                catch (Exception ex)
                {                MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
    }private void BtnUpdate_Click(object sender, EventArgs e)
    {
                if (ds.HasChanges())
                {
                    da.Update(ds,ds.Tables[0].ToString());
                    ds.AcceptChanges();
                } 
      

  12.   

    谢谢jiatong1981(末日之痕)的指点!
    像我这样的新手,该看哪些东西,最实用的,必须掌握的一些知识!
      

  13.   

    自己感觉还是不懂得原理,有的时候自己都不知道该从什么地方下手,以前一直是在做WEB开发的!
      

  14.   

    jiatong1981(末日之痕) 
    边学边干吧 自己多查资料 提高解决问题的能力===============================================================正解
      

  15.   

    用到bindingsource的话最好学学ado.net2.0 多使用强类型的数据集dataset
    结合tableupdater 关于数据绑定、新增、删除、修改完全都是可视化的操作