在Treeview节点上绑定Gridview点击
我想绑定treenode上的gridview click.code工作正常,但没有错误,但在UI中没有任何更改,但是当我在按钮单击时使用相同的代码时,Gridview会正确绑定数据。在Treeview节点上绑定Gridview点击
我apsx代码
<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>
CS代码:
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";
}
}
OnSelectedNodeChanged
方法被调用的node
点击,所有值设置正确,但从来没有得到体现。
请帮忙。
这是您的更新面板。节点事件源自UpdatePanel,所以只有更新面板在回发后才会更新。请记住,完整的Page生命周期发生,所以gridview会获取数据绑定,但只有UpdatePanel内的内容才会刷新。
您的选择:
- 添加
Folder_Treeview
作为回传触发 - 或 - - 摆脱的UpdatePanel的共 - 或 -
- 移动GridView中的UpdatePanel的ContentTemplate
内
另外一个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样式的引用隐式地设置控件的样式。有关更多信息,请参阅菜单控制概述。
FileUpload
和HtmlInputFile
控件何时用于上传文件作为异步回发的一部分。
GridView
和DetailsView
控制何时其EnableSortingAndPagingCallbacks属性设置为true。默认值是false。
Login
,PasswordRecovery
,ChangePassword
和CreateUserWizard
其内容未被转换为可编辑模板的控件。控制
Substitution
。
非常感谢。这仅仅是因为更新面板而发生的。 – user2148124