维护每个postbak的treeview状态

问题描述:

大家好,
我有一个从SQL数据库绑定的树视图.父级和子节点的导航URL属性设置为页面..但是在每篇帖子中,我都无法保持树状视图的状态...我该怎么办sam

以下是我的代码
受保护的void Page_Load(对象发送者,EventArgs e)
{

PopulateNodes();
if(Request.QueryString ["uid"]!= null || Request.QueryString ["cid"]!= null)
{
getData();
}

}
公共无效PopulateNodes()
{
DataSet dst = GetTreeViewData();
foreach(dst.Tables ["Universities"].Rows中的DataRow masterRow)//循环遍历行.
{
TreeNode masterNode =新的TreeNode(masterRow ["u_name"].ToString());
masterNode.Value = masterRow ["uid"].ToString();
masterNode.NavigateUrl =〜/coursedetails.aspx?uid =" + masterRow ["uid"].ToString();
TreeView1.Nodes.Add(masterNode);
foreach(masterRow.GetChildRows("Children")中的DataRow childRow)
{
TreeNode childNode =新的TreeNode(childRow ["c_name"].ToString());
childNode.NavigateUrl =〜/coursedetails.aspx?cid =" + childRow ["cid"].ToString();
childNode.Value = childRow ["cid"].ToString();
masterNode.ChildNodes.Add(childNode);
}
}

}
公共数据集GetTreeViewData()
{
SqlConnection con =新的SqlConnection(WebConfigurationManager.AppSettings.Get("mysqlserver"));
SqlDataAdapter dadunivstys =新的SqlDataAdapter("SELECT u_name,id as uid from tbluniversity",con);
SqlDataAdapter dadcourses =新的SqlDataAdapter("SELECT c_name,id as cid,uid,type FROM tblcourses",con);
DataSet dst = new DataSet();
dadunivstys.Fill(dst,大学");
dadcourses.Fill(dst,"Courses");
dst.Relations.Add("Children",dst.Tables ["Universities"].Columns ["uid"],dst.Tables ["Courses"].Columns ["uid"]);
返回dst;
}



公共无效的getData()
{

if(Request.QueryString ["cid"]!= null)
{

DataTable dt = new DataTable();
dt = DALSelect.DAL_selectcoursedetails(Request.QueryString ["cid"].ToString());
如果(dt.Rows.Count> 0)
{
dlstcourse.Visible = true;
}
dlstcourse.DataSource = dt;
dlstcourse.DataBind();

}
如果(Request.QueryString ["uid"]!= null)
{
DataTable dt = new DataTable();
dt = DALSelect.DAL_selectuniversitydetails(Request.QueryString ["uid"].ToString());
dluniversity.DataSource = dt;
dluniversity.DataBind();
如果(dt.Rows.Count> 0)
{
dluniversity.Visible = true;

}


}
}
感谢您的帮助

Reogeo

Hi all,
i have a treeview binded from an sql database.Parent and child nodes have their navigateurl proprety set to a page ..But on each post back i can''t maintain the treeview status...What shuld i do for the sam

following is my code
protected void Page_Load(object sender, EventArgs e)
{

PopulateNodes();
if (Request.QueryString["uid"] != null || Request.QueryString["cid"] != null)
{
getData();
}

}
public void PopulateNodes()
{
DataSet dst = GetTreeViewData();
foreach (DataRow masterRow in dst.Tables["Universities"].Rows) // Loop over the rows.
{
TreeNode masterNode = new TreeNode(masterRow["u_name"].ToString());
masterNode.Value = masterRow["uid"].ToString();
masterNode.NavigateUrl = "~/coursedetails.aspx?uid=" + masterRow["uid"].ToString();
TreeView1.Nodes.Add(masterNode);
foreach (DataRow childRow in masterRow.GetChildRows("Children"))
{
TreeNode childNode = new TreeNode(childRow["c_name"].ToString());
childNode.NavigateUrl = "~/coursedetails.aspx?cid=" + childRow["cid"].ToString();
childNode.Value = childRow["cid"].ToString();
masterNode.ChildNodes.Add(childNode);
}
}

}
public DataSet GetTreeViewData()
{
SqlConnection con = new SqlConnection(WebConfigurationManager.AppSettings.Get("mysqlserver"));
SqlDataAdapter dadunivstys = new SqlDataAdapter("SELECT u_name,id as uid FROM tbluniversity", con);
SqlDataAdapter dadcourses = new SqlDataAdapter("SELECT c_name,id as cid,uid,type FROM tblcourses", con);
DataSet dst = new DataSet();
dadunivstys.Fill(dst, "Universities");
dadcourses.Fill(dst, "Courses");
dst.Relations.Add("Children", dst.Tables["Universities"].Columns["uid"], dst.Tables["Courses"].Columns["uid"]);
return dst;
}



public void getData()
{

if(Request.QueryString["cid"]!=null)
{

DataTable dt = new DataTable();
dt = DALSelect.DAL_selectcoursedetails(Request.QueryString["cid"].ToString());
if (dt.Rows.Count > 0)
{
dlstcourse.Visible = true;
}
dlstcourse.DataSource = dt;
dlstcourse.DataBind();

}
if (Request.QueryString["uid"]!= null)
{
DataTable dt = new DataTable();
dt = DALSelect.DAL_selectuniversitydetails(Request.QueryString["uid"].ToString());
dluniversity.DataSource = dt;
dluniversity.DataBind();
if (dt.Rows.Count > 0)
{
dluniversity.Visible = true;

}


}
}
Thanks for any help

Reogeo


你可以试试这个....

1)在更新面板中放入树形视图,以便发生部分回发....
Hi,
You can try this....

1)Put You Tree-view In update Panel So That Partial Post Back Will Happened....