先介绍一下本人背景吧,本人刚跟着老师做项目,对.net不是很有研究,所以有很多问题看不懂,虚心向各路高人请教。我主要是遇到了一个treeview的传参问题,我做了一个页面,是由左右两个框架拼起来的,左边是treeview,右边是gridview,想实现的效果是当点击treeview的不同节点是,右面的gridview会显示不同的内容。我不太知道这个代码该怎么写,所以上网找了一段别人写的(如下),但是有些地方也不是看的很懂,所以想问问明白人。public void PopulateNodes(TreeNodeCollection nodes, Int32 intParentID) 

 DataTable dt = new DataTable(); 
 dt = showmenu.GetProduct_Class; //showmenu.GetProduct_Class是什么东西啊//
 string strExpression; 
 strExpression = "[UpID] = " + intParentID; //这一行怎么出现了两个等号?[UpID]是什么意思?//
 DataRow[] foundRows; 
 foundRows = dt.Select(strExpression); 
 int I; 
 for (int I = 0; I <= foundRows.GetUpperBound(0); I++) {   
   TreeNode tn = new TreeNode(); 
   tn.Text = foundRows(I).Item("ClassName").ToString(); 
   tn.Value = foundRows(I).Item("ID").ToString(); 
   tn.NavigateUrl = foundRows(I).Item("Url").ToString; 
   DataRow[] dr; 
   dr = dt.Select("[UpID] = " + tn.Value); 
   if (dr.GetUpperBound(0) > -1) { 
     tn.PopulateOnDemand = true;    //if这块每台看懂是啥意思.//
   } 
   nodes.Add(tn); 
 } 
}//我理解好像是这样的,就是写的这段代码主要是生成树的节点的,而且貌似好像只生成了父节点,而且父节点的链接url也是在数据库里写好的,不知道我这么理解对不对//
//然后有个人对于treeview控件如何把子节点传递参数出去的写了如下的代码//
if (foundRows(I).Item("UpID") == 0) { 
     tn.NavigateUrl = foundRows(I).Item("Url").ToString; 
   } else { 
     PassID = Convert.ToInt32(foundRows(I).Item("ID")); 
     tn.NavigateUrl = foundRows(I).Item("Url") + "?id=" + PassID.ToString;
 //我很想知道加下划线的这段代码是什么意思?这是不是就实现传参了?// 
   } 
谢谢大家

解决方案 »

  1.   

     dt   =   showmenu.GetProduct_Class;   //showmenu.GetProduct_Class是什么东西啊// 
    估计是调用业务层的属性来返回一个DataTablestrExpression   =   "[UpID]   =   "   +   intParentID;   //这一行怎么出现了两个等号?[UpID]是什么意思?// 
    这行简单,没看第二个等号在双引号里面么,它是把字符串常量 "[UpID] = "和一个变量intParentID(这个应该是父ID)用 加号
    拼接起来赋值给strExpression,UpID肯定是数据库表中的字段名,这个中括号可加可不加,一般是当字段名和SQL语法中的关键字重名的时候需要加
      

  2.   

          if   (dr.GetUpperBound(0)   >   -1)   {   
              tn.PopulateOnDemand   =   true;         //if这块每台看懂是啥意思.// 
          } 貌似判断是,如果有子节点,则...PassID   =   Convert.ToInt32(foundRows(I).Item("ID"));   
    tn.NavigateUrl   =   foundRows(I).Item("Url")   +   "?id="   +   PassID.ToString; 就如下http://xxx.xx.com/abc.aspx?id=123这种方式是最简单的跨页面传值的方式,在abc.aspx中可以用Request.QueryString["id"]得到上一页面传递的值(123)
    在这里是在foundRows(I).Item("Url")这个页面可以用如上的方式得到id的值
      

  3.   

    回复amandag:同学谢谢你哈,我明白了很多,我看了你的解释之后再到我自己的程序上改真的成功了,谢谢你哈