maqeMedlem sedan dec. 2003824 inlägg Undrar om någon vet hur man löser problemet med transparent bakgrund i treeview kontrollen? Det fungerar bra att sätta en färg men transparent verkar den inte gilla, inte heller att sätta en bakgrundsbild i kontrollen fungerar?
Sedan undrar jag även hur man gör för att menyn inte skall laddas om när jag väljer ett alternativ? Man vill ju att menyn skall vara öppen och kanske visa vilken som är selected t.ex.
maqeMedlem sedan dec. 2003824 inlägg Ingen som kört Microsofts treeview kontroll och inte vill att trädet skall "kollapsa" när man gör ett val i trädstrukturen. Detta inräffade efter att jag la in minNod.NavigateUrl då laddas sidan om och trädet "kollapsar" Ganska irriterande om man skall använda konttrollen som meny t.ex. då man vill att valt meny alternativ skall vara synligt
maqeMedlem sedan dec. 2003824 inlägg Jag har även en annan fråga angående treeview kontrollen.
Jag skulle vilja binda en högerklicksfunktion till varje nod och har provat med detta koncept
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"];
HyperLink NavLink = (HyperLink)nodeProd;
string LinkId = NavLink.AccessKey;
NavLink.Attributes.Add("oncontextmenu", "myContextFunc('" + LinkId + "')");
nodeSupp.Nodes.Add(nodeProd);
Såhär jag har tänkt mig att det skall fungera men nu går det inte att typkasta en treenode till att bli en HyperLink verkar det som.
Någon som har nått tips på hur jag ska gå vidare?
maqeMedlem sedan dec. 2003824 inlägg Verkar som att oncontextmenu finns som val i treeview kontrollen så jag löste den biten genom att helt enkelt lägga till oncontextmenu="minfunktion();" ...
maqeMedlem sedan dec. 2003824 inlägg Detta fungerade då inte som jag tänkt mig. Nu får jag en oncontext aktivitet när jag klickar vart som i treeview kontrollen. Vad jag ville åstadkomma var att binda en oncontext aktivitet till varje nod. Någon som kan hjälpa mig?
Daniel78Medlem sedan jan. 2001200 inlägg För att inte trädet ska kollapsa vid varje ny händelse så måste du sätta EnableViewState till True.
Mvh
Daniel
maqeMedlem sedan dec. 2003824 inlägg Det har jag haft hela tiden men mitt träd kollapsar endå? Dom andra inställningarna då?
AutoPostBack = false
AutoSelect = false
Enabled = true
EnableViewState = true
ExpandLevel = 0
SelectExtends = true
tabindex = 0
visible = true
så ser mina inställningar ut. Nått jag ska ändra på sidan annars?
i min page_load har jag if(!IsPostBack)LoadData()
och i LoadData fyller jag min meny
maqeMedlem sedan dec. 2003824 inlägg Vad kan de bero på att enableviewstate inte gör sitt jobb?
maqeMedlem sedan dec. 2003824 inlägg Ingen som kan hjälpa mig med att binda en högerklicksfunktion till varje nod i en treeview? Vad jag försöker göra nu är att snappa upp detta in Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs.
Såhär ser min tanke ut:
myNod.Attributes.Add("oncontextmenu", "myContextFunc('" & LinkId & "');");
Detta fungerar ju inte rakt av, någon måste ju kunna hjälpa mig med detta?
maqeMedlem sedan dec. 2003824 inlägg Någon mer än jag som har haft problem med onselectedindexchange när man laddar sin treeview med data från databas eller när treeviewkontrollen ligger i en UC? Metoden körs aldrig nämligen. Däremot om jag gör en enkel meny och lägger in lite noder direkt i kontrollen så körs onselectedindexchange metoden men inte när jag hämtar data från databas? Kan det vara nått fel på sättet jag gör för att hämta? koden :
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
LoadTree();
pageTitle.Text = "Välkommen till digitalteknik";
}
private void LoadTree()
{
string strConn = "server=localhost;database=Digitalteknik;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 = "?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 = "?ParentID=" + rowSupp\["ParentID"\] + "&ChildID=" + rowProd\["ChildID"\];
nodeSupp.Nodes.Add(nodeProd);
}
}
//clean up
objDS.Dispose();
daSuppliers.Dispose();
daProducts.Dispose();
objConn.Close();
objConn.Dispose();
}
maqeMedlem sedan dec. 2003824 inlägg Tar upp den här tråden igen.
Behöver hjälp med att bygga ut treeview kontrollen lite.
Jag har bundit kontrollen så att jag kan högerklicka på varje nod i min treeview och få upp en meny, där ska det finnas alternativ för att lägga till och ta bort noder är tanken. För tillfället har jag bara tillgång till e.NewNode och OldNode men för att jag t.ex. skall kunna ta bort en nod så behöver jag ju dess id i databasen.
Kolla gärna här så förstår ni hur jag menar. Menyn kräver ett klick på varje nod för att man sedan skall kunna högerlicka. http://213.114.24.4/treeview2/
Såhär ser koden ut för onselectedindexchanged
protected void mySelectChangeFn(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
TreeView1.Attributes.Add("oncontextmenu", "javascript:myContextFunc('" + e.NewNode + "');return false;");
TreeNode selectedNode = TreeView1.GetNodeFromIndex(e.NewNode);
}
Det är id´t jag skickar med till myContextFunc som skall vara id´t från databasen istället. Och hur jag binder id till varje nod syns tidigare i min tråd. Frågan är hur jag ska komma åt detta id i min onselectedindexchanged?
maqeMedlem sedan dec. 2003824 inlägg Ingen som vet hur man kan göra för att komma åt nodeProd.ID och nodeSupp.ID i mitt fall? ...
echoSweMedlem sedan nov. 20041 189 inlägg Så du vill alltså kunna högerklicka på en länk i menyn, där du får upp en meny att ta bort länken?
Din server blockade mig (?) så jag kan inte kolla källan, men id'et på varje nod skrivs väl i HTML filen, i och med att du skriver:
nodeSupp.ID = rowSupp["ParentID"].ToString();?
Om du ska ha en meny som kommer upp när du högerklickar så får du ju kolla javascript sidor. Sen kan ju en länk i högerklicksmenyn vara en, som använder GET till att skicka ID:et, på den noden som du vill ta bort, till servern.
Sen kollar du request.querystring["id"], och den inte är tom så raderas det id:et?
Jag kanske har fått det här helt fel :s
maqeMedlem sedan dec. 2003824 inlägg Ajdå sorry, nu funkar nog länken. Ja man skulle kunna lösa det med querystring kanske... dock skulle jag vilja använda objektets id istället, då jag behöver veta om det är en root nod eller en child nod när jag skall lägga till en meny
maqeMedlem sedan dec. 2003824 inlägg Jag använde mig av querystring ... såhär ser min lösning ut om någon är intresserad.
TreeView1.Attributes.Add("oncontextmenu", "javascript:myContextFunc('" + Request.QueryString["ParentID"] + "','" + Request.QueryString["ChildID"] + "');return false;");
sedan mina javascript
//## deklarera globala variabler ##
var myRootID;
var myChildID
//=====================================================================
//## Funktion för att visa min contextmenu vid högerklick på i bodyn ##
function myContextFunc(RootId, NodeId) {
myRootID = RootId;
myChildID = NodeId;
whichDiv=event.srcElement;
myDialog.style.posLeft=event.clientX+document.body.scrollLeft;
myDialog.style.posTop=event.clientY+document.body.scrollTop;
myDialog.style.display="";
}
//==========================================================
//## Funktion för att visa dialogrutan med linkproperties ##
function ShowMenuProperties() {
myDialog.style.display="none";
window.showModalDialog("dialog/dialog.aspx?ParentID=" + myRootID + "&ChildID=" + myChildID, "null", "resizable:no;help:no;status:no;scroll:no;");
}
Sedan kollar jag bara med request.querystring i min dialog.
Men nu återstår ett annat problem ... så fort jag lägger till en NavigateUrl till mina noder så körs inte onselectedindexchanged ... Någon som har ett svar på detta?
Får flera fel så fort jag lägger till minNod.NavigateUrl när jag binder min treeview till lite data. Ett av dom har jag redan nämt här ovan och ett annat är att min treeview kör collapse så fort jag väljer en childnod. Någon måste ju ha använt denan kontroll från microsoft?