有一个treeview1控件和gridview1控件,当点击treeview1中某一节点时,将access数据表中“城市”这一列中值为该节点值的数据绑定到gridview1控件中,例如点击南京,则前两条数据显示到gridview1控件中,请教要怎么实现啊?
treeview1节点大致如下:
江苏省                  
---南京
---苏州
---无锡
浙江省
---杭州
---宁波
---绍兴
数据表大致如下:
序号  货物编号  城市   所在省份
1      1001     南京   江苏省
2      1002     南京   江苏省
3      2003     宁波   浙江省还想请教下,gridview控件绑定AccessDataSource,想解除数据绑定,写代码怎么实现;
还有绑定数据库总提示“至少一个参数没有被指定值”是什么意思啊?谢谢各位啦!

解决方案 »

  1.   

    在TreeView的SelectedNodeChanged事件中
    获取TreeVeiew所选节点数据,
     string bmmc = this.bmTV.SelectedNode.Text; //bmTV就是TreeVeiew,bmGV是GridView
     string spsxbh = this.bmTV.SelectedNode.Value;
     bmGV.DataSource = new GVDataource().GetDataSource(bmmc, spsxbh);//后台重新绑定数据源
    //new GVDataource()是实例化的一个自定义类
    //new GVDataource().GetDataSource(bmmc, spsxbh);//得到的是一个DataTable
      

  2.   

    第一个问题:在TreeView控件定义一个节点选中事件响应函数,大概是NodeSelected这样子
    一个TreeViewNode存储信息的地方有三个,分别是Node.Text,Node.Name,Node.Tag
    其中Text就是存储一个简单的文本,也就是结点在树中显示出来的文本,不要求唯一
    Name相当于你的节点的标识符,唯一的,可以用来定位节点,比如TreeView1.Nodes["name1"],
    Tag可以赋值为一个Object类型,就是可以往一个节点上挂任意一个对象
    所以你可以获取这三个属性中任意一个的值,最简单的就是text,
    然后根据text在数据库里面查对应的记录第二个问题:我一般是DataGridView.DataSource=xxx,或者DataGridView.DataSource=null
    你是手动绑定的怎么解不清楚最后个问题:贴代码来看看,这个提示看起来应该是调用某个函数的时候传参不完全,或者传参过去是nullz值
      

  3.   

    我自己写了下代码
    protected void TreeView1_afterselect(object sender, EventArgs e)
        {
             OleDbConnectionStringBuilder csb = new OleDbConnectionStringBuilder();
            csb.DataSource = @"\city.mdb";
            csb.Provider = "microsoft.jet.oledb.4.0";
            using (OleDbConnection odcn = new OleDbConnection(csb.ConnectionString))
            {
                DataSet ds = new DataSet(); 
                string TreeViewId = this.TreeView1.SelectedNode.ToString();          
                OleDbCommand cmd = new OleDbCommand("select * from xzmsg where 城市=" + TreeViewId + "", odcn);
                odcn.Open();
                using (OleDbDataReader obrd = cmd.ExecuteReader())
                {
                    ds.Load(obrd , LoadOption.OverwriteChanges, new string[] { "xzmsg" });
                }
                GridView1.DataSource = ds;
                GridView1.DataBind();
                odcn.Close();
            } 
        }
    提示说“至少一个参数没有被指定值”,请指点啊
      

  4.   

    在OleDbDataReader obrd = cmd.ExecuteReader()提示
      

  5.   

    Access的链接我看不懂
    OleDbCommand cmd = new OleDbCommand("select * from xzmsg where 城市=" + TreeViewId + "", odcn);
      odcn.Open();
    你把这两个的执行顺序交换一下呢
      

  6.   

    你先测试你数据库连接打的开不,再测 OleDbCommand cmd = new OleDbCommand("select * from xzmsg where 城市=" + TreeViewId + "", odcn);这个,开有没问题。
      

  7.   

    你的GridView是不是还默认配有方法,就是第一次访问时加载数据是不是用的其他方法?
      

  8.   

    提示“至少一个参数没有被指定值”的问题总算解决了, 应该是OleDbCommand cmd = new OleDbCommand("select * from xzmsg where 城市'" + TreeViewId + "'", odcn);谢谢!
    继续请教!
      

  9.   

     /// <summary>
            /// 单击treeview某个节点事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
            {
                string Tnode = e.Node.Text;   //获取节点文本           
                  this.dataGridView1.DataSource = 查询结果
            }
      

  10.   

    Access 的参数怎么这么配呢?太高深了。
    你已经解决了,还有什么问题呢?
      

  11.   

    http://topic.csdn.net/u/20100724/18/B5927DBB-BB6B-40E3-858C-4063D2479EFC.html看看这个吧  最近很火的一个帖子
      

  12.   

    AccessDataSource不要设置成表   设置成SQL
      

  13.   

    在TreeView的SelectedNodeChanged事件中去写你那些代码。
    搞不懂你还要指点啥?
      

  14.   

    比较简单,简单说一下思路,当点击一个treeview节点后,获取数据,再将数据赋给将要绑定给dgv的datatable,这样就OK 了