先介绍一下本人背景吧,本人刚跟着老师做项目,对.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; //我很想知道加下划线的这段代码是什么意思?这是不是就实现传参了?//
}
谢谢大家
{
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; //我很想知道加下划线的这段代码是什么意思?这是不是就实现传参了?//
}
谢谢大家
估计是调用业务层的属性来返回一个DataTablestrExpression = "[UpID] = " + intParentID; //这一行怎么出现了两个等号?[UpID]是什么意思?//
这行简单,没看第二个等号在双引号里面么,它是把字符串常量 "[UpID] = "和一个变量intParentID(这个应该是父ID)用 加号
拼接起来赋值给strExpression,UpID肯定是数据库表中的字段名,这个中括号可加可不加,一般是当字段名和SQL语法中的关键字重名的时候需要加
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的值