【问题标题】:Run javascript code after TreeView TreeNodePopulate event在 TreeView TreeNodePopulate 事件之后运行 javascript 代码
【发布时间】:2014-04-10 09:38:43
【问题描述】:

我有一个位于 UpdatePanel 内的 TreeView 控件。我试图在 TreeView 加载时显示 Ajax 风格的“请稍候”动画 GIF(它可能会很慢,具体取决于数据量)。为了显示 GIF,我有一个模态叠加 DIV 来使背景变灰,另一个 DIV 来保存 GIF。

我已经设法通过将一些 jQuery 附加到 TreeView 上的单击事件来显示模态覆盖,如下所示:

SubMenuFoldersTreeView.Attributes.Add("onclick", "$('.modalOverlay').show(); $('.pleaseWait').show();");

当用户展开树节点时,这会导致模式叠加出现 - 到目前为止还可以。

我遇到的问题是,在 TreeView 完成填充节点后,我无法使模态覆盖消失。我尝试将一些像这样的 JavaScript 附加到 TreeNodePopulate 事件:

protected void SubMenuFoldersTreeView_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
    PopulateSubMenuSubLevelFolders(Convert.ToInt64(e.Node.Value), e.Node);

    ScriptManager.RegisterClientScriptBlock(this, GetType(), "start", "alert('hello');", true);
}

但是这似乎没有被添加到页面中。

【问题讨论】:

    标签: c# asp.net treeview


    【解决方案1】:

    您是否尝试在包含树视图的 UpdatePanel 中添加 ajax 'UpdateProgress'? 它将为您处理显示/隐藏。您所要做的就是指定“PrgressTemplate”。

    如果您有嵌套的 UpdatePanel,请记住为每个 UpdateMode="Conditional" 添加属性。

    编辑: 我了解到您想在使用 +/- 按钮展开/折叠节点时显示“请稍候”?

    如果是,试试这个: 加载页面后,运行 jquery(您可以使用 ajax pageLoad 函数)将函数分配给 onclick 事件到树视图容器内的每个折叠/展开图像。函数应接受一个参数,即包含在单击图像时显示/隐藏的节点的 div 的 id(它与包含在末尾添加“节点”字符串的图像的元素的 id 相同)。

    在该函数内部显示您的更新进度消息并通过 id 获取包含节点的 div 元素(作为参数传递的 id)并调用第二个函数传递该 id 和当前 style.display 包含节点的 div 值。

    在第二个函数中,检查 div 的当前 style.display 值是否与传入参数的值相同,如果不是,则调用相同的函数,超时时间为 100 毫秒 - 隐藏您的“请稍候”消息。

    【讨论】:

    • 是的,我有。 TreeView 控件不会触发 UpdatePanel 的 UpdateProgress。页面上的其他操作(例如按钮单击)会触发 UpdateProgress。我没有嵌套的 UpdatePanel。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2022-09-24
    • 1970-01-01
    相关资源
    最近更新 更多