на форме1 есть treeview и datagridview оба заполняются из БД при помощи хранимок
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
| public Form1()
{
InitializeComponent();
UpdateTree();
}
public void Add(int id)
{
Form2 f = new Form2();
if (DialogResult.Yes == f.ShowDialog())
{
sqlConnection1.Open();
try
{
SqlCommand cmd = new SqlCommand("StoredProcedure1",sqlConnection1);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = cmd.Parameters.Add("RETURN_VALUE", SqlDbType.Int);
param.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add("@idn_name", SqlDbType.Int).Value = id;
cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = f.a;
cmd.ExecuteNonQuery();
int tree_id = (int)cmd.Parameters["RETURN_VALUE"].Value;
cmd = new SqlCommand("StoredProcedure2", sqlConnection1);
cmd.CommandType=CommandType.StoredProcedure;
param = cmd.Parameters.Add("RETURN_VALUE", SqlDbType.Int);
param.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add("@idm_parent", SqlDbType.Int).Value = tree_id;
cmd.Parameters.Add("@fname", SqlDbType.VarChar).Value = f.b;
cmd.ExecuteNonQuery();
int grid=(int)cmd.Parameters["RETURN_VALUE"].Value;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"Ошибка");
}
sqlConnection1.Close();
}
}
public void UpdateTree()
{
dataSet11.Clear();
sqlDataAdapter1.Fill(dataSet11);
treeView1.Nodes.Clear();
Create(0, (TreeNode)null);
}
public void Create(int id, TreeNode tn)
{
DataView dv = new DataView(dataSet11.Tables[0]);
dv.RowFilter = "[idn_name]=" + id;
foreach (DataRowView row in dv)
{
int idd = Int32.Parse(row["idn"].ToString());
TreeNode tc = treeView1.Nodes.Add(row["name"].ToString());
tc.Tag = idd;
Create(idd, tc);
}
}
private void button1_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null)
{
int id = (int)treeView1.SelectedNode.Tag;
Add(id);
UpdateTree();
}
else
{
if (treeView1.SelectedNode == null)
{
Add(0);
UpdateTree();
}
}
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
int id=(int)treeView1.SelectedNode.Tag;
DataView dvv = new DataView(dataSet21.Tables[0]);
dvv.RowFilter = "[idm_parent]=" + id;
dataSet21.Clear();
sqlDataAdapter2.Fill(dataSet21);
}
} |
|
как реализовать AFTER SELECT в моём представленном варианте он не работает.при выборе одного элемента в treeview он просто добавляет ещё одну строку Где ошибка?