如何-TreeView设置选中状态? 因为向树目录添加了数据,更新树后,将其选中的状态更为新加的树结点。查了很多资料,不行。不知道这个SelectedNodeIndex或者其它的方法。老贴了,不知道有会的没有?如何用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to:xiaogueizi-----------GetTreeCtrl().SetFocus是什么属性吗?怎么没有. 你添加新node的时候返回一个indexSelectedNodeIndex=index 如何返回。DataView dv = ds.Tables[0].DefaultView; TreeNode tmpNd; dv.RowFilter = "parentid='" + pParentId + "'"; foreach(DataRowView drv in dv) { tmpNd = new TreeNode(); string aa = drv[0].ToString(); tmpNd.Expanded = true; //string strindex = tmpNd.GetNodeIndex(); //treeProduct.SelectedNodeIndex = strindex; tmpNd.ID = drv[0].ToString(); tmpNd.Text = "<span onclick=\"openProduct('" + drv[0].ToString() + "','"+ drv[1].ToString() +"')\">" + drv[2].ToString() + "</span>"; Nds.Add(tmpNd); initProductTree(tmpNd.Nodes,tmpNd.ID); }是否这样?//部分 兄弟,搞定了!我用的 Ajax,等会给你把源码贴上 一、aspx文件1、javascript函数 </HEAD> <script language="javascript"> function Initchecknode(groupno) { deptgroupper_right.Initchecknode(groupno,Initchecknode_CallBack); } function Initchecknode_CallBack(response) { if (response.value == null) { return; } var AllRootNode=new Array(); AllRootNode = TreeView1.getChildren(); for (var i=0;i<response.value.length;i++) { AlertNode(response.value[i],AllRootNode); } } function AlertNode(nodeId,NodeArray) { if(parseInt(NodeArray.length)==0) return; else { for(i=0;i<NodeArray.length;i++) { var cNode; cNode=NodeArray[i]; if (cNode.getAttribute("ID") == nodeId) { cNode.setAttribute("checked","true"); break; } else { if(parseInt(cNode.getChildren().length)!=0) AlertNode(nodeId,cNode.getChildren()); else continue; } } } } </script> </HEAD>2、body中添加onload事件<body onload="Initchecknode('<%=Request.QueryString["groupno"]%>');">二、CS文件1、private void Page_Load(object sender, System.EventArgs e) { Ajax.Utility.RegisterTypeForAjax(typeof(deptgroupper_right));//deptgroupper_right为你自己页面的文件名,此处为声明Ajax ...... }2、在cs文件中写一个与javascript同名的函数,注意[Ajax.AjaxMethod()],这个是一定需要的//查询该操作组所有子节点的ID [Ajax.AjaxMethod()] public ArrayList Initchecknode(string groupno) { if (groupno == "") return null; //GroupNameTextBox.Text = "ssss"; ArrayList al = new ArrayList(); SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["本地数据库"]); Conn.Open(); try { string strSql = "select deptGroup_no,dept_no from deptGroup_Model where deptGroup_no='" + groupno + "'"; SqlCommand cmd = new SqlCommand(strSql,Conn); SqlDataReader sdr = cmd.ExecuteReader(); while(sdr.Read()) { al.Add(sdr.GetValue(1).ToString().Trim()); } sdr.Close(); cmd.Dispose(); } finally { Conn.Close(); } return al; }三、修改web.config文件,添加如下配置代码 <httpHandlers> <!-- Register the ajax handler --> <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" /> </httpHandlers> 四、参考下面这个链接,修改treeview.htchttp://blog.csdn.net/cuike519/archive/2005/02/02/278271.aspx (谢谢这位牛人) asp.net AjaxPro 错误 关于倒计时 DataList绑定Hashtable后,出现排序错误??? 高手帮忙,近来看看 关于ACCESS 2003 里like句的问题! 如何实现像webpart那样可以拖动的界面? 那个web报表控件可动态调整列宽的。 DataSet 的 Merge的问题,应该合并到一个table 的怎么变成了好几个table. 制作菜单用什么方法制作? 如何实现后退功能? 新手请教有关Radio Button控件 转换出错?
-----------
GetTreeCtrl().SetFocus
是什么属性吗?
怎么没有.
SelectedNodeIndex=index
DataView dv = ds.Tables[0].DefaultView;
TreeNode tmpNd;
dv.RowFilter = "parentid='" + pParentId + "'";
foreach(DataRowView drv in dv)
{
tmpNd = new TreeNode();
string aa = drv[0].ToString();
tmpNd.Expanded = true;
//string strindex = tmpNd.GetNodeIndex(); //treeProduct.SelectedNodeIndex = strindex;
tmpNd.ID = drv[0].ToString();
tmpNd.Text = "<span onclick=\"openProduct('" + drv[0].ToString() + "','"+ drv[1].ToString() +"')\">" + drv[2].ToString() + "</span>";
Nds.Add(tmpNd);
initProductTree(tmpNd.Nodes,tmpNd.ID);
}
是否这样?//部分
1、javascript函数
</HEAD>
<script language="javascript">
function Initchecknode(groupno)
{
deptgroupper_right.Initchecknode(groupno,Initchecknode_CallBack);
}
function Initchecknode_CallBack(response)
{
if (response.value == null)
{
return;
}
var AllRootNode=new Array();
AllRootNode = TreeView1.getChildren();
for (var i=0;i<response.value.length;i++)
{
AlertNode(response.value[i],AllRootNode);
} }
function AlertNode(nodeId,NodeArray)
{
if(parseInt(NodeArray.length)==0)
return;
else
{
for(i=0;i<NodeArray.length;i++)
{
var cNode;
cNode=NodeArray[i];
if (cNode.getAttribute("ID") == nodeId)
{
cNode.setAttribute("checked","true");
break;
}
else
{
if(parseInt(cNode.getChildren().length)!=0)
AlertNode(nodeId,cNode.getChildren());
else
continue;
}
}
}
} </script>
</HEAD>
2、body中添加onload事件
<body onload="Initchecknode('<%=Request.QueryString["groupno"]%>');">
二、CS文件
1、private void Page_Load(object sender, System.EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(deptgroupper_right));//deptgroupper_right为你自己页面的文件名,此处为声明Ajax
......
}
2、在cs文件中写一个与javascript同名的函数,注意[Ajax.AjaxMethod()],这个是一定需要的
//查询该操作组所有子节点的ID
[Ajax.AjaxMethod()]
public ArrayList Initchecknode(string groupno)
{
if (groupno == "")
return null;
//GroupNameTextBox.Text = "ssss";
ArrayList al = new ArrayList();
SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["本地数据库"]);
Conn.Open();
try
{
string strSql = "select deptGroup_no,dept_no from deptGroup_Model where deptGroup_no='" + groupno + "'";
SqlCommand cmd = new SqlCommand(strSql,Conn);
SqlDataReader sdr = cmd.ExecuteReader();
while(sdr.Read())
{
al.Add(sdr.GetValue(1).ToString().Trim());
}
sdr.Close();
cmd.Dispose();
}
finally
{
Conn.Close();
}
return al;
}三、修改web.config文件,添加如下配置代码
<httpHandlers>
<!-- Register the ajax handler -->
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
四、参考下面这个链接,修改treeview.htc
http://blog.csdn.net/cuike519/archive/2005/02/02/278271.aspx (谢谢这位牛人)