السؤال الاول:
لدي مشكلة في الكود التالي حيث انني عندما اقوم باستدعاء الدالة في حدث ال load الخاص بالفورم فإنها تظهر المشكلة, اما في حالة استدعاءها في حدث ال click الخاص بالزر فانها لا تظهر اي مشكلة؟
private void treeBuild()
{
//Clears the nodes everytime the form loads
treeView1.Nodes.Clear();
SqlConnection cn = new SqlConnection("Data Source=IBB; Initial Catalog=testProcess; User ID=sa; Password=********");
SqlCommand cmdgroups=new SqlCommand("select groupId, groupName from groups",cn);
//To open the database connection
cmdgroups.Connection.Open();
//Adds data to the datareader dr;
SqlDataReader myReader=cmdgroups.ExecuteReader(CommandBehavior.CloseConnection);
//Add "Groups and Users" Lable as the root node
treeView1.Nodes.Add("Groups and Users");
treeView1.TopNode.Tag="root";
//treeView1.ShowRootLines=false;
//Adds the image
treeView1.TopNode.ImageIndex = 0;
treeView1.TopNode.SelectedImageIndex = 0;
//Add Nodes to the tree from DataReader
while(myReader.Read())
{
//Represents a node of a TreeView.
TreeNode node = new TreeNode();
//Adds groupName to the tag
//node.Tag = myReader.GetValue(0).ToString();
node.Tag = "group";
node.Text = myReader.GetString(1);
node.ImageIndex=1;
node.SelectedImageIndex=1;
treeView1.TopNode.Nodes.Add(node);
buildChildren( node );
//treeView1.ExpandAll();
treeView1.TopNode.Expand();
}
//Closes the datareader
myReader.Close();
//Closes the connection
cmdgroups.Connection.Close();
}
private void buildChildren( TreeNode parent )
{
SqlConnection cn = new SqlConnection("Data Source=IBB; Initial Catalog=testProcess; User ID=sa; Password=*******");
SqlCommand cmdgroups=new SqlCommand("select userName from users where userGroup=(select groupId from groups where groupName='"+parent.Text+"')",cn);
//To open the database connection
cmdgroups.Connection.Open();
//Adds data to the datareader dr;
SqlDataReader myReader=cmdgroups.ExecuteReader(CommandBehavior.CloseConnection);
while(myReader.Read())
{
//Adds userName to the tag
//parent.ImageIndex=3;
//parent.SelectedImageIndex=4;
parent.Tag="user";
//parent.Text=myReader["userName"].ToString();
parent.Nodes.Add(myReader["userName"].ToString());
}
//Closes the datareader
myReader.Close();
//Closes the connection
cmdgroups.Connection.Close();
}السؤال الثاني
في الدالة الاولى اريد اعطاء
node.Tag = "group"; node.Text = myReader.GetString(1);
وفي الدالة الثانية اريد اعطاء
parent.Tag="user"; parent.Nodes.Add(myReader["userName"].ToString());
ولكن الذي يحدث بان نفس القيمة لل node.tag تعطى لكلتا الدالتين؟
السؤال الثالث:
كيف استطيع اخذ قيمة ال node.Tag و node.Text لل node التي اقوم بالضغط عليها بيمين الماوس؟