在TreeView TreeNodePopulate事件之后运行javascript代码

时间:2014-04-10 09:38:43

标签: c# asp.net treeview

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

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

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);
}

然而,这似乎没有被添加到页面中。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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