javascript获取TreeView控件选中节点的Text和Value
在实际项⽬中,遇到⼀个问题,⾸先弹出⼀个新窗⼝,新窗⼝中放了⼀个TreeView控件,TreeView控件的数据绑定在我的上⼀篇随笔(TreeView绑定XML数据源C#代码⽰例)中有讲到,现在要解决的是,如何单击TreeView中⼀个节点,返回Text和Value到⽗页⾯并关闭该新窗⼝。
⾸先,在后台代码中为TreeView添加属性onclick以⽀持TreeView的客户端事件,代码如下:
if (!IsPostBack)
{
TreeView1.Attributes.Add("onclick", "ReturnValue()");//ReturnValue为javascript函数
BindTreeView();
}
那现在就要解决如何通过js获得TreeView中被选中的那个节点,脚本如下:
function ReturnValue() {
var objNode = event.srcElement;
var unitid = event.srcElement.href;
if (objNode.tagName != "SPAN") {
return;
}
window.ElementById("txtUnit").value = Attribute("innerHtml");
window.ElementById("txtUnitID").value = unitid;
window.close();
}
其实这⾥⽤了点⼩花招,因为我实在不知道在哪个属性⾥能获得绑定给TreeView的ValueField的值,所以,Value值我⼀并绑给了NavigateUrl,也就是写黄⾊部分代码的原因,Html代码如下:
如何查看html代码
<asp:TreeView ID="TreeView1" runat="server" ExpandDepth="1">
<DataBindings>
<asp:TreeNodeBinding TextField="NAME" ValueField="Value" NavigateUrlField="Value" SelectAction="None" />
</DataBindings>
</asp:TreeView>
红⾊部分代码是⽤来获取TreeView上显⽰⽂字的,因为如果你去查看源⽂件的话,你会发现,TreeView的Text属性值被放在了SPAN中。
绿⾊部分代码是⽤来回填⽗页⾯的,但是要注意的是,"txtUnit"必须是客户端控件,因为如果是服务器端控件,弹窗在编译时会报不存在该控件。
这样,我需要的功能就实现了!另外,有⼈可能会说,⽗页⾯中⽤来装载回填值的是客户端控件,那如果要在服务器事件中使⽤怎么办?也很简单,C#代码如下:
Request.Form["txtUnit"].ToString();
但是要注意了,这⾥的"txtUnit"可不是控件ID,⽽是name属性了!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。