Jag använder mig av IE´s Treeviewkontroll och har problem när jag lägger till navigateurl. Då verkar den ladda om hela sidan och sparar inte viewstate läget och onselectedindexchange körs inte.
kolla här får ni se vad jag menar
5 svar · 333 visningar · startad av maqe
Jag använder mig av IE´s Treeviewkontroll och har problem när jag lägger till navigateurl. Då verkar den ladda om hela sidan och sparar inte viewstate läget och onselectedindexchange körs inte.
kolla här får ni se vad jag menar
Det är ingen som vet varför viewstate inte fungerar eller varför onselectedindexchanged inte körs när jag lägger till navigateurl i min codebehind?
Det är alltså det som händer när man klickar på + vid färdiga system och sedan väljer en nod under ... då collapsar trädet igen ... min treeview skall även expandera när man klickar på namnet på länken men det slutar med fungera då jag lägger till en navigateurl. Det kanske har nått med postback att göra?
Jag gör ett sista försök ...
Tänka visa lite hur jag gör för att binda datan till treeviewkontrollen. Nån som inte har använt den men som kan lite asp.net kanske tycker att jag borde göra på annat sätt.
Först i page_load kollar jag
if(!isPostBack)
LoadData();
och i min LoadData() har jag all kod för att binda datan från en sql server såhär
private void LoadData()
{
string strConn = "server=localhost;database=*****;User Id=****;Password=*****;";
SqlConnection objConn = new SqlConnection(strConn);
DataSet objDS = new DataSet();SqlDataAdapter daSuppliers = new SqlDataAdapter("SELECT ParentID, ParentLinkName, ParentControl FROM ParentMenu", objConn); SqlDataAdapter daProducts = new SqlDataAdapter("SELECT ChildID, ParentID, ChildLinkName FROM ChildMenu", objConn); daSuppliers.Fill(objDS, "dtSuppliers"); daProducts.Fill(objDS, "dtProducts"); objConn.Close(); objDS.Relations.Add("SuppToProd", objDS.Tables\["dtSuppliers"\].Columns\["ParentID"\], objDS.Tables\["dtProducts"\].Columns\["ParentID"\]); TreeNode nodeSupp, nodeProd; foreach (DataRow rowSupp in objDS.Tables\["dtSuppliers"\].Rows) { nodeSupp = new TreeNode(); nodeSupp.Text = rowSupp\["ParentLinkName"\].ToString(); nodeSupp.ID = rowSupp\["ParentID"\].ToString(); nodeSupp.NavigateUrl = "default.aspx?ParentID=" + rowSupp\["ParentID"\] + "&ControlID=" + rowSupp\["ParentControl"\]; TreeView1.Nodes.Add(nodeSupp); foreach (DataRow rowProd in rowSupp.GetChildRows("SuppToProd")) { nodeProd = new TreeNode(); nodeProd.Text = rowProd\["ChildLinkName"\].ToString(); nodeProd.ID = rowProd\["ChildID"\].ToString(); nodeProd.NavigateUrl = "default.aspx?ParentID=" + rowSupp\["ParentID"\] + "&ChildID=" + rowProd\["ChildID"\]; nodeSupp.Nodes.Add(nodeProd); } } //clean up objDS.Dispose(); daSuppliers.Dispose(); daProducts.Dispose(); objConn.Close(); objConn.Dispose(); }
Och som sagt så fort jag använder mig av attributet *.NavigateUrl så körs verkar sidan laddas om och varken viewstate eller onselectedindexchanged mm fungerar längre
Funderar på om man skulle kunna använda Javascript för att lägga till länken och skippa navigateurl helt ... vad tror ni om det?
Känns lite tjatigt att hålla på att skriva i samma tråd själv men det är ingen som vet nån annan treeview kontroll man kan använda som fungerar bättre?