maxpayn2
دوشنبه 10 دی 1386, 14:38 عصر
سلام
چند وقت بود که برام سوال شده بود چه طوری میشه فایل Web.sitemap که یه فایل XML هست رو به صورت اتوماتیک و از روی دیتابیس ساخت تا بشه به کمک اون منو ها و زیر منو ها به صورت داینامیک و بوسیله خود کاربر ساخته بشن ، بعد از جستجو به نتایجی رسیدم که حاصل اون ها رو اینجا مینویسم :
SQL :
http://i8.tinypic.com/8fyvpyw.jpg
ASPX :
<asp:MenuID="Menu1"runat="server"DataSourceID="SiteMapDataSource1">
</asp:Menu>
<asp:SiteMapDataSourceID="SiteMapDataSource1"runat="server"ShowStartingNode="false"/>
C# :
using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;using System.Xml;
using System.Xml.Serialization;
public partialclassXMLmenu : System.Web.UI.Page
{
protectedvoid Page_Load(object sender, EventArgs e)
{
string path = Server.MapPath("~") + "\\Web.sitemap";
Label1.Text = path;
XmlTextWriter xtw = newXmlTextWriter(path, System.Text.UTF8Encoding.UTF8);
xtw.WriteStartDocument();
xtw.Formatting = Formatting.Indented;
xtw.WriteStartElement("siteMap", "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0");
xtw.WriteStartElement("siteMapNode");
xtw.WriteAttributeString("url", "");
xtw.WriteAttributeString("title", "");
xtw.WriteAttributeString("description", "");
SqlConnection cnn = newSqlConnection("Data Source=.;Database=test;Integrated Security=SSPI");
SqlCommand cmd = newSqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "select * from menu where parent_id = '0'";
cnn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
xtw.WriteStartElement("siteMapNode");
xtw.WriteAttributeString("url", dr[2].ToString());
xtw.WriteAttributeString("title", dr[3].ToString());
xtw.WriteAttributeString("description", "");
SqlConnection cnn1 = newSqlConnection("Data Source=.;Database=test;Integrated Security=SSPI");
SqlCommand cmd1 = newSqlCommand();
cmd1.Connection = cnn1;
cmd1.CommandText = "select * from menu where parent_id = '" + Convert.ToInt32(dr[0].ToString()) + "'";
cnn1.Open();
SqlDataReader dr1 = cmd1.ExecuteReader();
while (dr1.Read())
{
xtw.WriteStartElement("siteMapNode");
xtw.WriteAttributeString("url", dr1[2].ToString());
xtw.WriteAttributeString("title", dr1[3].ToString());
xtw.WriteAttributeString("description", "");
SqlConnection cnn2 = newSqlConnection("Data Source=.;Database=test;Integrated Security=SSPI");
SqlCommand cmd2 = newSqlCommand();
cmd2.Connection = cnn2;
cmd2.CommandText = "select * from menu where parent_id = '" + Convert.ToInt32(dr1[0].ToString()) + "'";
cnn2.Open();
SqlDataReader dr2 = cmd2.ExecuteReader();
while (dr2.Read())
{
xtw.WriteStartElement("siteMapNode");
xtw.WriteAttributeString("url", dr2[2].ToString());
xtw.WriteAttributeString("title", dr2[3].ToString());
xtw.WriteAttributeString("description", "");
xtw.WriteEndElement();
}
cnn2.Close();
xtw.WriteEndElement();
}
cnn1.Close();
xtw.WriteEndElement();
}
cnn.Close();
xtw.WriteEndElement();
xtw.Close();
}
}
VB (با استفاده از سایت های کانورتر تبدیل کردم) :
Imports System
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Collections
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports System.Xml
Imports System.Xml.Serialization
Public Class XMLmenu Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim path As String = (Server.MapPath("~") + "\\Web.sitemap")
Label1.Text = path
Dim xtw As XmlTextWriter = New XmlTextWriter(path, System.Text.UTF8Encoding.UTF8)
xtw.WriteStartDocument
xtw.Formatting = Formatting.Indented
xtw.WriteStartElement("siteMap", "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0")
xtw.WriteStartElement("siteMapNode")
xtw.WriteAttributeString("url", "")
xtw.WriteAttributeString("title", "")
xtw.WriteAttributeString("description", "")
Dim cnn As SqlConnection = New SqlConnection("Data Source=.;Database=test;Integrated Security=SSPI")
Dim cmd As SqlCommand = New SqlCommand
cmd.Connection = cnn
cmd.CommandText = "select * from menu where parent_id = '0'"
cnn.Open
Dim dr As SqlDataReader = cmd.ExecuteReader
While dr.Read
xtw.WriteStartElement("siteMapNode")
xtw.WriteAttributeString("url", dr(2).ToString)
xtw.WriteAttributeString("title", dr(3).ToString)
xtw.WriteAttributeString("description", "")
Dim cnn1 As SqlConnection = New SqlConnection("Data Source=.;Database=test;Integrated Security=SSPI")
Dim cmd1 As SqlCommand = New SqlCommand
cmd1.Connection = cnn1
cmd1.CommandText = ("select * from menu where parent_id = '" _
+ (Convert.ToInt32(dr(0).ToString) + "'"))
cnn1.Open
Dim dr1 As SqlDataReader = cmd1.ExecuteReader
While dr1.Read
xtw.WriteStartElement("siteMapNode")
xtw.WriteAttributeString("url", dr1(2).ToString)
xtw.WriteAttributeString("title", dr1(3).ToString)
xtw.WriteAttributeString("description", "")
Dim cnn2 As SqlConnection = New SqlConnection("Data Source=.;Database=test;Integrated Security=SSPI")
Dim cmd2 As SqlCommand = New SqlCommand
cmd2.Connection = cnn2
cmd2.CommandText = ("select * from menu where parent_id = '" _
+ (Convert.ToInt32(dr1(0).ToString) + "'"))
cnn2.Open
Dim dr2 As SqlDataReader = cmd2.ExecuteReader
While dr2.Read
xtw.WriteStartElement("siteMapNode")
xtw.WriteAttributeString("url", dr2(2).ToString)
xtw.WriteAttributeString("title", dr2(3).ToString)
xtw.WriteAttributeString("description", "")
xtw.WriteEndElement
End While
cnn2.Close
xtw.WriteEndElement
End While
cnn1.Close
xtw.WriteEndElement
End While
cnn.Close
xtw.WriteEndElement
xtw.Close
End Sub
End Class
البته طریقه کد نویسیش بسیار ابتدایی و غیر حرفه ای ، دوستان به حرفه ای بودن خودشون ببخشن ، اگه هم کسی لطف کرد و طریقه کدنویسی رو برای خودش بهبود بخشید اینجا هم بزاره
چند وقت بود که برام سوال شده بود چه طوری میشه فایل Web.sitemap که یه فایل XML هست رو به صورت اتوماتیک و از روی دیتابیس ساخت تا بشه به کمک اون منو ها و زیر منو ها به صورت داینامیک و بوسیله خود کاربر ساخته بشن ، بعد از جستجو به نتایجی رسیدم که حاصل اون ها رو اینجا مینویسم :
SQL :
http://i8.tinypic.com/8fyvpyw.jpg
ASPX :
<asp:MenuID="Menu1"runat="server"DataSourceID="SiteMapDataSource1">
</asp:Menu>
<asp:SiteMapDataSourceID="SiteMapDataSource1"runat="server"ShowStartingNode="false"/>
C# :
using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;using System.Xml;
using System.Xml.Serialization;
public partialclassXMLmenu : System.Web.UI.Page
{
protectedvoid Page_Load(object sender, EventArgs e)
{
string path = Server.MapPath("~") + "\\Web.sitemap";
Label1.Text = path;
XmlTextWriter xtw = newXmlTextWriter(path, System.Text.UTF8Encoding.UTF8);
xtw.WriteStartDocument();
xtw.Formatting = Formatting.Indented;
xtw.WriteStartElement("siteMap", "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0");
xtw.WriteStartElement("siteMapNode");
xtw.WriteAttributeString("url", "");
xtw.WriteAttributeString("title", "");
xtw.WriteAttributeString("description", "");
SqlConnection cnn = newSqlConnection("Data Source=.;Database=test;Integrated Security=SSPI");
SqlCommand cmd = newSqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "select * from menu where parent_id = '0'";
cnn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
xtw.WriteStartElement("siteMapNode");
xtw.WriteAttributeString("url", dr[2].ToString());
xtw.WriteAttributeString("title", dr[3].ToString());
xtw.WriteAttributeString("description", "");
SqlConnection cnn1 = newSqlConnection("Data Source=.;Database=test;Integrated Security=SSPI");
SqlCommand cmd1 = newSqlCommand();
cmd1.Connection = cnn1;
cmd1.CommandText = "select * from menu where parent_id = '" + Convert.ToInt32(dr[0].ToString()) + "'";
cnn1.Open();
SqlDataReader dr1 = cmd1.ExecuteReader();
while (dr1.Read())
{
xtw.WriteStartElement("siteMapNode");
xtw.WriteAttributeString("url", dr1[2].ToString());
xtw.WriteAttributeString("title", dr1[3].ToString());
xtw.WriteAttributeString("description", "");
SqlConnection cnn2 = newSqlConnection("Data Source=.;Database=test;Integrated Security=SSPI");
SqlCommand cmd2 = newSqlCommand();
cmd2.Connection = cnn2;
cmd2.CommandText = "select * from menu where parent_id = '" + Convert.ToInt32(dr1[0].ToString()) + "'";
cnn2.Open();
SqlDataReader dr2 = cmd2.ExecuteReader();
while (dr2.Read())
{
xtw.WriteStartElement("siteMapNode");
xtw.WriteAttributeString("url", dr2[2].ToString());
xtw.WriteAttributeString("title", dr2[3].ToString());
xtw.WriteAttributeString("description", "");
xtw.WriteEndElement();
}
cnn2.Close();
xtw.WriteEndElement();
}
cnn1.Close();
xtw.WriteEndElement();
}
cnn.Close();
xtw.WriteEndElement();
xtw.Close();
}
}
VB (با استفاده از سایت های کانورتر تبدیل کردم) :
Imports System
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Collections
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports System.Xml
Imports System.Xml.Serialization
Public Class XMLmenu Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim path As String = (Server.MapPath("~") + "\\Web.sitemap")
Label1.Text = path
Dim xtw As XmlTextWriter = New XmlTextWriter(path, System.Text.UTF8Encoding.UTF8)
xtw.WriteStartDocument
xtw.Formatting = Formatting.Indented
xtw.WriteStartElement("siteMap", "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0")
xtw.WriteStartElement("siteMapNode")
xtw.WriteAttributeString("url", "")
xtw.WriteAttributeString("title", "")
xtw.WriteAttributeString("description", "")
Dim cnn As SqlConnection = New SqlConnection("Data Source=.;Database=test;Integrated Security=SSPI")
Dim cmd As SqlCommand = New SqlCommand
cmd.Connection = cnn
cmd.CommandText = "select * from menu where parent_id = '0'"
cnn.Open
Dim dr As SqlDataReader = cmd.ExecuteReader
While dr.Read
xtw.WriteStartElement("siteMapNode")
xtw.WriteAttributeString("url", dr(2).ToString)
xtw.WriteAttributeString("title", dr(3).ToString)
xtw.WriteAttributeString("description", "")
Dim cnn1 As SqlConnection = New SqlConnection("Data Source=.;Database=test;Integrated Security=SSPI")
Dim cmd1 As SqlCommand = New SqlCommand
cmd1.Connection = cnn1
cmd1.CommandText = ("select * from menu where parent_id = '" _
+ (Convert.ToInt32(dr(0).ToString) + "'"))
cnn1.Open
Dim dr1 As SqlDataReader = cmd1.ExecuteReader
While dr1.Read
xtw.WriteStartElement("siteMapNode")
xtw.WriteAttributeString("url", dr1(2).ToString)
xtw.WriteAttributeString("title", dr1(3).ToString)
xtw.WriteAttributeString("description", "")
Dim cnn2 As SqlConnection = New SqlConnection("Data Source=.;Database=test;Integrated Security=SSPI")
Dim cmd2 As SqlCommand = New SqlCommand
cmd2.Connection = cnn2
cmd2.CommandText = ("select * from menu where parent_id = '" _
+ (Convert.ToInt32(dr1(0).ToString) + "'"))
cnn2.Open
Dim dr2 As SqlDataReader = cmd2.ExecuteReader
While dr2.Read
xtw.WriteStartElement("siteMapNode")
xtw.WriteAttributeString("url", dr2(2).ToString)
xtw.WriteAttributeString("title", dr2(3).ToString)
xtw.WriteAttributeString("description", "")
xtw.WriteEndElement
End While
cnn2.Close
xtw.WriteEndElement
End While
cnn1.Close
xtw.WriteEndElement
End While
cnn.Close
xtw.WriteEndElement
xtw.Close
End Sub
End Class
البته طریقه کد نویسیش بسیار ابتدایی و غیر حرفه ای ، دوستان به حرفه ای بودن خودشون ببخشن ، اگه هم کسی لطف کرد و طریقه کدنویسی رو برای خودش بهبود بخشید اینجا هم بزاره