要在网页中用Microsoft.Web.UI.WebControls.TreeView实现一个收藏夹功能,现在是希望通过点击《新增》在树上生成一个节点,该节点是可编辑的(就像新建文件夹一样),然后用户可以在里面输入
名字,移动鼠标到外面后把输入的名字保存会数据库。我现在的做法是记录新增的节点,在生成树时判断,如果是新增的,则
if(是新增节点)
{新增节点.Text=@"<INPUT name='FavoriteName' id='FavoriteName'value='"+FavoritesInfo.FavoriteName+"' onchange='DoSomething(this);' style='Z-INDEX: 10000;BORDER-RIGHT: #000099 1px inset; BORDER-TOP: #000099 1px inset; BORDER-LEFT: #000099 1px inset; WIDTH: 80px; BORDER-BOTTOM: #000099 1px inset ' onFocusOut='LostFocus(this);' type='text'>";}
这样我可以基本上实现上述功能。现在的问题是:1.如何让INPUT框在生成树后直接显示为可输入状态,即用户可以直接输入名字。而现在是用户要点击两次之后才能输入东西。2.我在客户端用document.getElementById('FavoriteName')不能找到INPUT框,也就不能在客户端给与更灵活的控制。请大家帮帮忙,看看怎么解决这个问题!谢谢!

解决方案 »

  1.   

    1.既然你能够直接输出一个<input>作为节点,你也就可以输出一个<a>和<input style="display:hidden">作为节点,在<a>的onclick时隐藏<a>并显示<input>,这样点“新增”时就少一次服务器端忘返。2.因为那个控件的服务器端ID为FavoriteName不意味着它的客户端ID也是,你需要通过此控件的ClientID属性获取其客户端ID。
      

  2.   

    To: cat_hsfz(我的Blog在http://purl.oclc.org/NET/cathsfz)
    通过此控件的ClientID属性获取其客户端ID 如何做?
    我希望通过脚本设置input的焦点。如document.getElementById('FavoriteName').focus().
    请问怎么实现?
    谢谢
      

  3.   

    看源文件得到<tvns:treeview id="TreeViewKBFavorite" onclick="SelectNodeName();GetNodesId()" imageUrl="../Images/file.gif" selectedNodeIndex="0" HelperID="__TreeViewKBFavorite_State__" systemImagesPath="/webctrl_client/1_0/treeimages/" showToolTip="false" __scrollTop="0" __scrollLeft="0" onexpand="javascript: if (this.clickedNodeIndex != null) this.queueEvent('onexpand', this.clickedNodeIndex)" oncollapse="javascript: if (this.clickedNodeIndex != null) this.queueEvent('oncollapse', this.clickedNodeIndex)" oncheck="javascript: if (this.clickedNodeIndex != null) this.queueEvent('oncheck', this.clickedNodeIndex)" onselectedindexchange="javascript: if (event.oldTreeNodeIndex != event.newTreeNodeIndex) this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex)" style="height:100%;width:348px;">
    <tvns:treenode Expanded="True" ID="00000000-0000-0000-0000-000000000000">
    我的收藏夹<tvns:treenode Expanded="True" ID="a698f63d-8bb6-419e-bcb7-126efcf74cc2">
    kkshou
    </tvns:treenode><tvns:treenode Expanded="True" ID="2216ea8e-8798-405f-9fe5-29804b8aec10">
    精华推荐<tvns:treenode Expanded="True" ID="47020a08-4dd3-469b-bf6e-18d2a416190f">
    娱乐新闻<tvns:treenode Expanded="True" ID="15527fd7-ea85-4bdf-bbd9-edd932641bdb">
    hhh<tvns:treenode Expanded="True" ID="962c1cd7-f0b0-4e49-9de7-b27488f996b6">
    新建收藏
    </tvns:treenode><tvns:treenode Expanded="True" ID="a9c3fa14-3770-4ba2-89aa-f873057e4af8">
    新建收藏夹
    </tvns:treenode><tvns:treenode Expanded="True" ID="01823821-4e0a-4ec3-8bca-a593ce5964fb">
    新建收藏夹1
    </tvns:treenode><tvns:treenode Expanded="True" ID="cb6861ce-d4dc-4b8f-94e9-ae602117217b">
    新建收藏夹2
    </tvns:treenode><tvns:treenode Expanded="True" ID="5d19099f-b2bc-456a-90d5-4afea297b2fd">
    新建收藏夹3<tvns:treenode Expanded="True" ID="0ba15338-0dcc-4004-9690-13ed7b90d3aa">
    新建收藏夹ttt<tvns:treenode Expanded="True" ID="0daa8900-271a-4fb0-b9e5-a464d6a79f84">
    <INPUT name='FavoriteName' id='FavoriteName' value='新建收藏夹t' onchange='DoSomething(this);' style='Z-INDEX: 10000;BORDER-RIGHT: #000099 1px inset; BORDER-TOP: #000099 1px inset; BORDER-LEFT: #000099 1px inset; WIDTH: 80px; BORDER-BOTTOM: #000099 1px inset '  type='text'>
    </tvns:treenode>
    </tvns:treenode>
    </tvns:treenode><tvns:treenode Expanded="True" ID="04622b8b-4099-48f6-923d-acb8b40ec80d">
    新建收受luu
    </tvns:treenode>
    </tvns:treenode>
    </tvns:treenode>
    </tvns:treenode><tvns:treenode Expanded="True" ID="3c3c2adc-4308-487d-a088-b3fb7cf9eb1f">
    生活点滴<tvns:treenode Expanded="True" ID="a9cfc42a-317a-4b1f-b8d8-3deb4cdcb1b6">
    新建收藏<tvns:treenode Expanded="True" ID="109b4a98-d7dd-486e-a234-4bd4e4d41880">
    新间
    </tvns:treenode>
    </tvns:treenode>
    </tvns:treenode><tvns:treenode Expanded="True" ID="e5eb7cd2-e305-4f7e-b00e-b6af8691e9fc">
    图99
    </tvns:treenode><tvns:treenode Expanded="True" ID="02d9f014-d8df-472b-8005-7ee0cd35682a">
    知识
    </tvns:treenode>
    </tvns:treenode>
    </tvns:treeview>可以看到<INPUT 的存在,现在我希望通过js让<INPUT 获得输入焦点,有什么办法没有?请大家帮帮忙!
      

  4.   

    别沉啊,大家帮帮忙,看怎么从
    <tvns:treenode Expanded="True" ID="0daa8900-271a-4fb0-b9e5-a464d6a79f84">
    <INPUT name='FavoriteName' id='FavoriteName' value='新建收藏夹t' onchange='DoSomething(this);' style='Z-INDEX: 10000;BORDER-RIGHT: #000099 1px inset; BORDER-TOP: #000099 1px inset; BORDER-LEFT: #000099 1px inset; WIDTH: 80px; BORDER-BOTTOM: #000099 1px inset '  type='text'>
    </tvns:treenode>
    中取到INPUT,让其获得焦点!
      

  5.   

    别沉啊,大家帮帮忙,看怎么从
    <tvns:treenode Expanded="True" ID="0daa8900-271a-4fb0-b9e5-a464d6a79f84">
    <INPUT name='FavoriteName' id='FavoriteName' value='新建收藏夹t' onchange='DoSomething(this);' style='Z-INDEX: 10000;BORDER-RIGHT: #000099 1px inset; BORDER-TOP: #000099 1px inset; BORDER-LEFT: #000099 1px inset; WIDTH: 80px; BORDER-BOTTOM: #000099 1px inset '  type='text'>
    </tvns:treenode>
    中取到INPUT,让其获得焦点!
      

  6.   

    从上面的代码看。如果你用document.getElementById('FavoriteName')去获取的时候,你确认该Input框已经生成
    了的话,是一定可以获取到的。现在的问题是不是这个INPUT在你使用Javascript去获取之后才生成出来?