Jag har sutit bra länge nu, och försökt komma på hur jag skall göra. Nu kan jag inte C# eller classnamnet på för en node. Men kanske närmare en lösning: Ett tappert försök, men jag får massor av fel bl a <code> Möjligen att vi är på rätt väg. Näe, men jag tror att problemet ligger här: <code> Tack juventus1 för att du försöker men....icke. Ok, ett nytt försök: Det verkar vara helt kört. Nu ser det ut som om jag är säker på felkällan. Jag har själv gjort detta men då har jag lagrad det boolska värdet som ett boolskt värde i databasen också, inte som 1 eller 0. Vad händer när du gör sträng-jämförelsen som jag postade? Om den inte fungerar så skriv ut innehållet i ds1.Tables["listaKunder"].Rows[b]["SkickCD"].ToString() och kolla att den verkligen innehåller vad du tror. Jag har lyckats med att lösa problemet... <code>Byta icon i en listView beroeede av databasens värde.
I imageList1 så finns två iconer. Jag vill skiffte dessa beroende om skickCD är sant.
<code>
int rader = ds1.Tables["listaKunder"].Rows.Count;
nr = new String[rader];
for(int b = 0;b < rader; b++)
{
treeView1.ImageIndex = 1;
treeView1.SelectedImageIndex= 1;
treeView1.Nodes.Add
(ds1.Tables["listaKunder"].Rows[b]["Firma"].ToString());
nr[b] = ds1.Tables["listaKunder"].Rows[b]["Firma"].ToString();
bool test=Convert.ToBoolean(ds1.Tables["listaKunder"].Rows[a]["SkickCD"]);
if(test)
{
treeView1.ImageIndex = 0;
treeView1.SelectedImageIndex= 0;
}
else
{
treeView1.Nodes[0].ImageIndex = 1;
treeView1.Nodes[0].SelectedImageIndex= 1;
}
}
</code>
Jättetacksam för all hjälp.Sv: Byta icon i en listView beroeede av databasens värde.
<code>
int rader = ds1.Tables["listaKunder"].Rows.Count;
nr = new String[rader];
for(int b = 0;b < rader; b++)
{
treeviewnode NewNode = New treeviewnode;
NewNode.Text = ds1.Tables["listaKunder"].Rows[b]["Firma"].ToString();
nr[b] = ds1.Tables["listaKunder"].Rows[b]["Firma"].ToString();
bool test=Convert.ToBoolean(ds1.Tables["listaKunder"].Rows[a]["SkickCD"]);
if(test)
{
NewNode.ImageIndex = 0;
NewNode.SelectedImageIndex= 0;
}
else
{
NewNode.ImageIndex = 1;
NewNode.SelectedImageIndex= 1;
}
treeView1.Nodes.Add NewNode
}
</code>Sv: Byta icon i en listView beroeede av databasens värde.
<code>
treeviewnode NewNode = New treeviewnode;
NewNode.Text
</code>
Det finns ingenting som heter treeviewnode.Sv: Byta icon i en listView beroeede av databasens värde.
TreeNode newNode = new TreeNode("fin text här");
</code>Sv: Byta icon i en listView beroeede av databasens värde.
Error:
<code>
treeView1.Nodes.Add NewNode;
E:\C#\SAW\SAW\frmKunder.cs(1011): 'SAW.frmKunder.treeView1' denotes a 'field' where a 'class' was expected
</code>
Här har jag ingen aning om vad som menas.Sv: Byta icon i en listView beroeede av databasens värde.
<code>
bool test=Convert.ToBoolean(ds1.Tables["listaKunder"].Rows[a]["SkickCD"]);
if(test
</code>
Jag körde en MessageBox och den visade true på allt.
Mao bool test måste skrivas om men hur f......Sv: Byta icon i en listView beroeede av databasens värde.
bool test = Convert.ToBoolean(ds1.Tables["listaKunder"].Rows[a]["SkickCD"].ToString());
</code>
Borde fungera lite bättre...Sv: Byta icon i en listView beroeede av databasens värde.
Datatypen i databasen är bit och det ligger sparat som 1 eller 0.
Kan det hjälpa?Sv: Byta icon i en listView beroeede av databasens värde.
<code>
bool test = Convert.ToBoolean(Convert.ToInt32(ds1.Tables["listaKunder"].Rows[a]["SkickCD"]));
</code>
Det är mycket möjligt att detta inte fungerar. Då får du göra det på det jobbiga sättet (borde fungera):
<code>
if (ds1.Tables["listaKunder"].Rows[a]["SkickCD"].ToString() == "1")
test = true;
else
test = false;
</code>Sv: Byta icon i en listView beroeede av databasens värde.
Så här ser det alltså ut just nu:
<code>
int rader = ds1.Tables["listaKunder"].Rows.Count;
nr = new String[rader];
for(int b = 0;b < rader; b++)
{
TreeNode newNode = new TreeNode();
newNode.Text = ds1.Tables["listaKunder"].Rows[b]["Firma"].ToString();
nr[b] = ds1.Tables["listaKunder"].Rows[b]["Firma"].ToString();
bool test = Convert.ToBoolean(Convert.ToInt32(ds1.Tables["listaKunder"].Rows[a]["SkickCD"]));
if (ds1.Tables["listaKunder"].Rows[a]["SkickCD"] = "1")
test = true;
else
test = false;
if(test)
{
newNode.ImageIndex = 0;
newNode.SelectedImageIndex= 0;
}
else
{
newNode.ImageIndex = 1;
newNode.SelectedImageIndex= 1;
}
treeView1.Nodes.Add(newNode);
}
</code>
Ser du något annat fel?? (PS det finns ett antal som är true)Sv: Byta icon i en listView beroeede av databasens värde.
Skriver jag så här så blir allt true(även om databasen innehåller någonting annat.
<code>
if(test=Convert.ToBoolean(ds1.Tables["listaKunder"].Rows[b]["SkickCD"]=true))
</code>
Så här så blir det ett error kan inte göra om bool till string
<code>
if(ds1.Tables["listaKunder"].Rows[b]["SkickCD"].ToString()=true)
</code>
Lägger jag detta innan loopen så har jag inga fel
<code>
bool test=Convert.ToBoolean(ds1.Tables["listaKunder"].Rows[a]["SkickCD"]);
</code>
För att kolla så gjorde jag så här :
<code>
newNode.Text = ds1.Tables["listaKunder"].Rows[b]["Firma"].ToString() + " " + ds1.Tables["listaKunder"].Rows[b]["SkickCD"].ToString();
</code>
Nu kan jag se i treeview:n att vissa poster är true, andra är false, men jag kommer inte åt att hantera dem.
Hur f-n gör jag??? Sv: Byta icon i en listView beroeede av databasens värde.
Sv: Byta icon i en listView beroeede av databasens värde.
<code>
int rader = ds1.Tables["listaKunder"].Rows.Count;
nr = new String[rader];
for(int b = 0;b < rader; b++)
{
Application.DoEvents();
string strAlbum =ds1.Tables["listaKunder"].Rows[b]["Firma"].ToString();
System.Windows.Forms.TreeNode oNode = new System.Windows.Forms.TreeNode();
oNode.Text =strAlbum;
treeView1.Nodes.Add(oNode);
if((bool)ds1.Tables["listaKunder"].Rows[b]["SkickCD"])
{
oNode.ImageIndex = 0;
oNode.SelectedImageIndex = 0;
}
else
{
oNode.ImageIndex = 1;
oNode.SelectedImageIndex = 1;
}
</code>
Men ett problem återstår:
När jag klickar på treeviewn så kan jag fånga upp den så här:
<code>
MessageBox.Show(e.Node.Text);
</code>
Men hur gör jag här:
<code>
string kolumn = listBoxTotal.SelectedItem.ToString();
//det skall alltså vara treeview istället för listbox
</code>Sv: Byta icon i en listView beroeede av databasens värde.
string kolumn = TreeView.SelectedNode.Text;
</code>