我想在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";
}
}
方法,并且所有值都设置正确但从未得到反映。
请帮忙。
答案 0 :(得分:3)
它是您的更新面板。节点事件源自UpdatePanel,因此只有“更新”面板将在回发后更新。请记住,整个页面生命周期都会发生,因此gridview确实会获得数据绑定,但只会更新UpdatePanel中的内容。
您的选择:
Folder_Treeview
添加为PostBack触发器 - 或 - 同样是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
控件。