اتصال و نمایش داده های سلسله مراتبی با کنترل TreeView در Asp.NET با استفاده از #C و VB.NET
دوشنبه 18 اسفند 1393در این مقاله نحوه اتصال و نمایش داده های سلسله مراتبی با استفاده از کنترل TreeView در Asp.NET با کمک دستور #C و VB.NET شرح داده میشود .
برای نمایش رابطه در TreeView ما دو جدول با نامهای VehicleTypes و VehicleSubTypes در بانک اطلاعاتی میسازیم .
نمای ظاهر و اطلاعات مربوط به جداول به شرح زیر می باشد :
جدول VehicleTypes
جدول VehicleSub Types
تگ HTML مربوط به کنترل TreeView شامل زیر میباشد :
<h3> Vehicle Details</h3> <hr /> <asp:TreeView ID="TreeView1" runat="server" ImageSet="XPFileExplorer" NodeIndent="15"> <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" /> <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px" NodeSpacing="0px" VerticalPadding="2px"></NodeStyle> <ParentNodeStyle Font-Bold="False" /> <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px" VerticalPadding="0px" /> </asp:TreeView>
همچنین ما باید فضای نامهای زیر را به پروژه اضافه کنیم :
کد #C :
using System.Data; using System.Data.SqlClient; using System.Configuration;
کد VB.NET :
Imports System.Data Imports System.Data.SqlClient Imports System.Configuration
روش Populated TreeViewیک تابع بازگشتی است . داخل رویداد Load مربوط به صفحه کنترل TreeView اطلاعات جدول VehicleTypes را نمایش می دهد , داخل متد TreeView یک حلقه برای Data Table اجرا میشود که اگر ID والد برار با صفر یاشد زیر شاخه مربوط به آن فیلد نمایش داده نمیشود .Query مورد نظر برای جدول VehicleSubTypes اجرا میشود و اطلاعات مربوط به هر Node در زیر همان Node نمایش داده میشود. این روند تا زمانی که همه ID های مربوط به جدول والد و اطلاعات مربوط به جدول فرزند فراخوانی بشوند ادامه پیدا می کند .
کد #C :
protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { DataTable dt = this.GetData("SELECT Id, Name FROM VehicleTypes"); this.PopulateTreeView(dt, 0, null); } } private void PopulateTreeView(DataTable dtParent, int parentId, TreeNode treeNode) { foreach (DataRow row in dtParent.Rows) { TreeNode child = new TreeNode { Text = row["Name"].ToString(), Value = row["Id"].ToString() }; if (parentId == 0) { TreeView1.Nodes.Add(child); DataTable dtChild = this.GetData("SELECT Id, Name FROM VehicleSubTypes WHERE VehicleTypeId = " + child.Value); PopulateTreeView(dtChild, int.Parse(child.Value), child); } else { treeNode.ChildNodes.Add(child); } } } private DataTable GetData(string query) { DataTable dt = new DataTable(); string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand cmd = new SqlCommand(query)) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.CommandType = CommandType.Text; cmd.Connection = con; sda.SelectCommand = cmd; sda.Fill(dt); } } return dt; } }
کد مربوط به VB.NET :
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Me.IsPostBack Then Dim dt As DataTable = Me.GetData("SELECT Id, Name FROM VehicleTypes") Me.PopulateTreeView(dt, 0, Nothing) End If End Sub Private Sub PopulateTreeView(dtParent As DataTable, parentId As Integer, treeNode As TreeNode) For Each row As DataRow In dtParent.Rows Dim child As New TreeNode() With { _ .Text = row("Name").ToString(), _ .Value = row("Id").ToString() _ } If parentId = 0 Then TreeView1.Nodes.Add(child) Dim dtChild As DataTable = Me.GetData("SELECT Id, Name FROM VehicleSubTypes WHERE VehicleTypeId = " + child.Value) PopulateTreeView(dtChild, Integer.Parse(child.Value), child) Else treeNode.ChildNodes.Add(child) End If Next End Sub Private Function GetData(query As String) As DataTable Dim dt As New DataTable() Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString Using con As New SqlConnection(constr) Using cmd As New SqlCommand(query) Using sda As New SqlDataAdapter() cmd.CommandType = CommandType.Text cmd.Connection = con sda.SelectCommand = cmd sda.Fill(dt) End Using End Using Return dt End Using End Function
- ASP.net
- 4k بازدید
- 5 تشکر