PDA

View Full Version : چارت سازمانی در vb.net



elnazii
چهارشنبه 06 بهمن 1389, 18:09 عصر
با سلام خدمت اساتید محترم
من قصد دارم توی یک برنامه windows application ( با vb.net) فرمی بگذارم برای ایجاد و ویرایش چارت سازمانی.به این صورت که کاربر بتونه قسمتی رو به چارت اضافه یا حذف کنه.موارد هم طبعا باید در بانک sql server 2000 ذخیره بشن.من تصمیم دارم از یک treeview استفاده کنم که مشکلم وقتی هست که می خوام برای زیر شاخه های سطح 3 به بعد فرزند ایجاد کنم.(فرزند های جدید همش به زیر شاخه های اولین نود از سطح 1 اضافه میشن) :متفکر:
لطفا من رو از نکته نظرات خودتون بهره مند کنید.

DoDoklak
پنج شنبه 07 بهمن 1389, 18:32 عصر
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"Data Source=.\WINCC;Initial Catalog=Northwind;Integrated Security=True;");
SqlDataAdapter da;
DataSet ds = new DataSet();

da = new SqlDataAdapter("SELECT * FROM Orders WHERE CustomerID = 'vinet'", con);
da.Fill(ds);

foreach (DataRow row in ds.Tables[0].Rows)
{
TreeNode treeNode1 = new TreeNode(row["Freight"].ToString());
TreeNode treeNode2 = new TreeNode(row["EmployeeID"].ToString(), new TreeNode[] { treeNode1 });
TreeNode treeNode3 = new TreeNode(row["orderid"].ToString(), new TreeNode[] { treeNode2 });

treeView1.Nodes.AddRange(new TreeNode[] { treeNode3 });
}
}

Vahab
پنج شنبه 07 بهمن 1389, 22:41 عصر
با سلام

البته اینجا بخش VB.NET هستش شما کد رو به زبان C# گذاشتید .............



Private Sub Form1_Load(sender As Object, e As EventArgs)
Dim con As New SqlConnection("Data Source=.\WINCC;Initial Catalog=Northwind;Integrated Security=True;")
Dim da As SqlDataAdapter
Dim ds As New DataSet()

da = New SqlDataAdapter("SELECT * FROM Orders WHERE CustomerID = 'vinet'", con)
da.Fill(ds)

For Each row As DataRow In ds.Tables(0).Rows
Dim treeNode1 As New TreeNode(row("Freight").ToString())
Dim treeNode2 As New TreeNode(row("EmployeeID").ToString(), New TreeNode() {treeNode1})
Dim treeNode3 As New TreeNode(row("orderid").ToString(), New TreeNode() {treeNode2})

treeView1.Nodes.AddRange(New TreeNode() {treeNode3})
Next
End Sub

ali_najari
جمعه 08 بهمن 1389, 17:32 عصر
دوست عزیز این کد زمانی جواب میده که شما بخواهید تا 2 سطح پیش بروید ولی اگر میزان سطح نا معلوم باشد چطوری میخواهید انجام بدید این کار رو؟

elnazii
شنبه 09 بهمن 1389, 09:30 صبح
دوست عزیز این کد زمانی جواب میده که شما بخواهید تا 2 سطح پیش بروید ولی اگر میزان سطح نا معلوم باشد چطوری میخواهید انجام بدید این کار رو؟

با تشکر از کمکتون اما برای من هم مسئله حل نشد:ناراحت:

ali_najari
شنبه 09 بهمن 1389, 14:00 عصر
با تشکر از کمکتون اما برای من هم مسئله حل نشد:ناراحت:


دوست عزيز من دارم روش كار ميكنم كمي صبر كنيد تا شايد بتونم راهي واسش پيدا كنم!

elnazii
چهارشنبه 10 فروردین 1390, 11:39 صبح
دوست عزيز من دارم روش كار ميكنم كمي صبر كنيد تا شايد بتونم راهي واسش پيدا كنم!

من همچنان منتظر پاسخ هستم.

ircast
چهارشنبه 10 فروردین 1390, 12:48 عصر
من همچنان منتظر پاسخ هستم.

سلام

از این تابع استفاده کن

Public Function InsertNode(ByVal N As TreeNode, ByVal PID As Integer) As Boolean
Try
Dim SqlCon As New SqlConnection(SqlConection)
SqlCon.Open()
Dim Cmd As New SqlCommand("SELECT * FROM Menu WHERE ParentID='" & PID & " ' ORDER BY ID ", SqlCon)
Dim Dr As SqlDataReader = Cmd.ExecuteReader()
While Dr.Read()
Dim T As New TreeNode(Dr("NodeText").ToString)
InsertNode(T, Convert.ToInt32(Dr("ID")))
If N Is Nothing Then
TreeView1.Nodes.Add(T)
Else
N.Nodes.Add(T)
End If
End While
Dr.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
End Try
End Function

اینجوری هم ازش استفاده کن


InsertNode(Nothing, 0)

elnazii
چهارشنبه 10 فروردین 1390, 13:12 عصر
سلام

از این تابع استفاده کن

Public Function InsertNode(ByVal N As TreeNode, ByVal PID As Integer) As Boolean
Try
Dim SqlCon As New SqlConnection(SqlConection)
SqlCon.Open()
Dim Cmd As New SqlCommand("SELECT * FROM Menu WHERE ParentID='" & PID & " ' ORDER BY ID ", SqlCon)
Dim Dr As SqlDataReader = Cmd.ExecuteReader()
While Dr.Read()
Dim T As New TreeNode(Dr("NodeText").ToString)
InsertNode(T, Convert.ToInt32(Dr("ID")))
If N Is Nothing Then
TreeView1.Nodes.Add(T)
Else
N.Nodes.Add(T)
End If
End While
Dr.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
End Try
End Function

اینجوری هم ازش استفاده کن


InsertNode(Nothing, 0)

pid رو چطور مقدار بدم ؟ حذفش چطوریه؟؟

ircast
چهارشنبه 10 فروردین 1390, 13:28 عصر
pid رو چطور مقدار بدم ؟ حذفش چطوریه؟؟

این یه نمونه با اکسس هست امیدوارم کمکتون کنه

amirsadeghi
شنبه 13 فروردین 1390, 20:20 عصر
نمیشه به جای tree view از یه فلگ استفاده کنی؟
البته یکم غیر منطقیه ولی برای کشیدن چارت کارت راحت تر میشه.
من توی یکی از پروژه هام این کارو به این مدل انجام داده بودم، جالب شده بود
اگه پیدا کنم حتما میزارمش