在Treeview节点上绑定Gridview单击

时间:2016-04-26 04:08:15

标签: c# asp.net gridview treeview

我想在treenode上绑定gridview click.code工作正常而没有错误但在UI中没有任何变化,但是当我在按钮点击时使用相同的代码时,Gridview正确地绑定数据。

我的apsx代码是

SessionService.get("userId") is undefined or not

CS代码:

Authentication
<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div style="overflow: scroll; height: 450px;"> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Always"> <ContentTemplate> <asp:TreeView ID="Folder_Treeview" runat="server" ShowLines="true" LeafNodeStyle-CssClass="childnode" Style="" ForeColor="Blue" SelectedNodeStyle-ForeColor="Green" OnSelectedNodeChanged="Folder_Treeview_SelectedItemChanged"> </asp:TreeView> </ContentTemplate> </asp:UpdatePanel> </div> <asp:GridView ID="GridView1" CssClass="grid" GridLines="None" ShowFooter="true" AllowPaging="true" PageSize="5" AutoGenerateColumns="false" OnPageIndexChanging="GridView1_PageIndexChanging" runat="server"> <Columns> <asp:TemplateField HeaderText="Name"> <ItemTemplate> <asp:Label ID="lblName" runat="server" Text='<%#Eval("Name")%>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="File Length"> <ItemTemplate> <asp:Label ID="lblLen" runat="server" Text='<%#Eval("Length")%>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="File Extention"> <ItemTemplate> <asp:Label ID="lblFileType" runat="server" Text='<%#Eval("Extension")%>'> </asp:Label></ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Creation Date & Time"> <ItemTemplate> <asp:Label ID="lblDateTime" runat="server" Text='<%#Eval("CreationTime")%>'> </asp:Label></ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <p> <asp:Label Text="" ID="lblMsg" runat="server"></asp:Label></p> 点击时调用

protected void Folder_Treeview_SelectedItemChanged(object sender, EventArgs e) { TreeNode node = this.Folder_Treeview.SelectedNode; SetFolderPath(node); } public void SetFolderPath(TreeNode node) { Session["ParentFolderId"] = node; // System.IO.DirectoryInfo RootDir = new System.IO.DirectoryInfo(Server.MapPath("~/")); string CurrNode = node.Text; string separator = "\\"; Folder_Treeview.PathSeparator = Convert.ToChar(separator); while (node.Parent != null) { CurrNode = node.Parent.Text + this.Folder_Treeview.PathSeparator + CurrNode; node = node.Parent; } ViewState["Folder"] = CurrNode; ViewState["FileType"] = "All"; GetFilesFromFolder(); } private void GetFilesFromFolder() { // GET A LIST OF FILES FROM A SPECIFILED FOLDER. DirectoryInfo objDir = new DirectoryInfo(Server.MapPath((string)ViewState["Folder"])); FileInfo[] listfiles = objDir.GetFiles("*." + ((string)ViewState["FileType"] != "All" ? ViewState["FileType"] : "*")); if (listfiles.Length > 0) { // BIND THE LIST OF FILES (IF ANY) WITH GRIDVIEW. GridView1.Visible = true; GridView1.DataSource = listfiles; GridView1.DataBind(); lblMsg.Text = listfiles.Length + " files found"; } else { GridView1.Visible = false; lblMsg.Text = "No files found"; } } 方法,并且所有值都设置正确但从未得到反映。

请帮忙。

1 个答案:

答案 0 :(得分:3)

它是您的更新面板。节点事件源自UpdatePanel,因此只有“更新”面板将在回发后更新。请记住,整个页面生命周期都会发生,因此gridview确实会获得数据绑定,但只会更新UpdatePanel中的内容。

您的选择:

  1. Folder_Treeview添加为PostBack触发器 - 或 -
  2. 完全摆脱UpdatePanel - 或 -
  3. 在UpdatePanel ContentTemplate
  4. 中移动Gridview

    同样是TreeView is one of several server controls that may not be compatible with an UpdatePanel

      

    以下ASP.NET控件与部分页面更新不兼容,因此不适用于UpdatePanel控件:

         
        
    • TreeView在几种情况下进行控制。一种是启用不属于异步回发的回调。另一种方法是直接将样式设置为控件属性,而不是通过使用CSS样式的引用来隐式设置控件样式。另一种是当EnableClientScript属性为false时(默认为true)。另一种方法是在异步回发之间更改EnableClientScript属性的值。有关更多信息,请参阅TreeView Web服务器控件概述。

    •   
    • Menu控件直接将样式设置为控件属性,而不是通过使用CSS样式的引用来隐式设置控件样式。有关详细信息,请参阅菜单控制概述。

    •   
    • FileUploadHtmlInputFile控制何时用于上传文件,作为异步回发的一部分。

    •   
    • GridViewDetailsView控制何时将其EnableSortingAndPagingCallbacks属性设置为true。默认值为false。

    •   
    • LoginPasswordRecoveryChangePasswordCreateUserWizard控件的内容尚未转换为可修改的模板。

    •   
    • Substitution控件。

    •