webForumDet fria alternativet

IE Treeview

5 svar · 333 visningar · startad av maqe

maqeMedlem sedan dec. 2003824 inlägg
#1

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

http://ankdamm.ath.cx/treeview2/default.aspx

maqeMedlem sedan dec. 2003824 inlägg
#2

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?

maqeMedlem sedan dec. 2003824 inlägg
#3

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?

maqeMedlem sedan dec. 2003824 inlägg
#4

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

maqeMedlem sedan dec. 2003824 inlägg
#5

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?

maqeMedlem sedan dec. 2003824 inlägg
#6

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?

131 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)