【问题标题】:Call a javascript inside SelectedNodeChanged event handler in c#在 c# 中调用 SelectedNodeChanged 事件处理程序中的 javascript
【发布时间】:2014-07-01 04:46:47
【问题描述】:

我用数据库中的数据填充了我的树节点。树视图代码如下:

<asp:TreeView ID="mytv" runat="server" ImageSet="Arrows" 
        ondatabinding="Page_Load" onselectednodechanged="mytv_SelectedNodeChanged">

这方面的代码隐藏如下:

protected void mytv_SelectedNodeChanged(object sender, EventArgs e)
{
  // how to call java-script function from here.
}

我想要实现的是根据使用 JavaScript 单击的树节点显示 div 的内容。

或者是否有任何其他方式可以在单击树视图节点时显示来自数据库或 div 的内容。

【问题讨论】:

    标签: c# javascript asp.net treeview


    【解决方案1】:

    在方法中使用这个:

    ScriptManager.RegisterStartupScript(this, this.GetType(), 
                                        "anyName", "alert('test');", true);
    

    【讨论】:

    • anyname 是什么,它有什么作用?
    • 这是脚本块的唯一标识符,您可以随意命名。
    【解决方案2】:

    我刚刚重读了你的帖子,如果你只是想从树视图中获取选定的值,你可以在你的 JS 中使用更多类似的东西

    function CheckTreeValue()
    {
        var treeView = document.getElementById('treeviewID');
        if(treeView.selectedNodeID.value != null)
        {
            var selectedNode = document.getElementById(treeView.selectedNodeID.value);
            //Get Whatever you need from the node
            var text = selectedNode.text;
            WebService.PullValue(text, callback);
        } 
        else // No Node Selected
            return;
    }
    

    您可以通过滥用

    手动创建脚本
    <asp:Literal>
    

    但最好使用ScriptManager

    ScriptManager.RegisterStartupScript(
        this,
        this.GetType(), 
        "UniqueScriptKey", 
        "FunctionYouWantToCall();
         alert(document.getElementById('OrAnyJavascript').innerHTML);", 
        true);  
    

    【讨论】:

    • 但是我们可以在javaScript函数中使用treeview的selectedNodeId之类的属性吗?我认为不可能。是吗?
    • 是 selectedNodeID 是一个预定义的属性,还是你做了它,因为我在任何地方都找不到它。你在你的 javascript 函数中使用了任何树视图属性或方法。我们可以在 javascript 函数中使用任何树视图属性或方法吗?
    • 应该内置到 ASP.NET 中不记得我在哪里找到它的文档,但是 here is the official for getting selected node link
    • 获取所选节点不是我想要的。它可以作为 TreeView tv = sender as TreeView;字符串 nid = tv.SelectedNode.Text; .但它是在 .cs 文件的函数内部完成的,而不是在 javascript 的函数内部完成的。你误会了朋友,你不能在javascript函数中使用asp.net的预定义属性。
    • 请确保您提供的代码是有效的。如果不编辑id,因为它已经有两个投票了。如果发现错误,其他用户可能会被冒犯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多