PDA

View Full Version : مشکل با بایند کنترل treeview (ارور Root element is missing.)



khz-web1
یک شنبه 19 مهر 1388, 00:45 صبح
من از کد زیر برای بایند استفاده می کنم ....


Imports System.Data.SqlClient
Imports System.Data
Imports System.Xml
Partial Class _Default
Inherits System.Web.UI.Page
Public writer As XmlWriter
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Public Function GetMenuByParentID(ByVal parentId As Integer) As DataTable
Dim dt As New DataTable()
Using con As New SqlConnection("Data Source=.;Initial Catalog=testmenu;User ID=sa;Password=123456789")
con.Open()
Dim cmd As New SqlCommand("select * from TBLMenu where ParentID=@ParentID", con)
cmd.Parameters.AddWithValue("@ParentID", parentId)
Dim da As New SqlDataAdapter(cmd)
da.Fill(dt)
con.Close()
Return dt
End Using
End Function


Public Sub CreateMenu()
writer = XmlWriter.Create(Server.MapPath("Temp\menu.XML"))
writer.WriteStartDocument()
writer.WriteStartElement("Menu")
CreateNodes(0)
writer.WriteEndDocument()

End Sub
Public Sub CreateNodes(ByVal parentId As Integer)
Dim dt As DataTable = GetMenuByParentID(parentId)
For Each dr As DataRow In dt.Rows
writer.WriteStartElement("Node")
writer.WriteStartAttribute("ID")
writer.WriteValue(dr("MenuID").ToString())
writer.WriteEndAttribute()

writer.WriteStartAttribute("Name")
writer.WriteValue(dr("MenuName").ToString())
writer.WriteEndAttribute()
CreateNodes(Convert.ToInt32(dr("MenuID")))
writer.WriteEndElement()
Next
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
CreateMenu()
Response.Redirect("~/")
End Sub
End Class



ولی متاسفانه ارور های زیر رو میده
بعضی وقت ها اینو میده
The process cannot access the file 'i:\menu3\Temp\Menu.xml' because it is being used by another process

و بعضی وقت ها هم این ارور
Root element is missing.

دوستان روش بهتری برای ساهت منو سراغ ندارند که حالت Parent داشته باشه (زیر منو)

با تشکر

alireza_s_84
یک شنبه 19 مهر 1388, 09:41 صبح
The process cannot access the file 'i:\menu3\Temp\Menu.xml' because it is being used by another process

سلام دوست عزیز:
مشکل بالا مربوط به این هست که غیر از شما کس دیگه ای به اون فایل دسترسی داره و چون فایل بازه شما نمیتونید تغییراتی رو روی فایل انجام بدین . هنگام باز کردن فایل دسترسی دیگر کاربران رو به فایل لغو کنید.


Root element is missing.

مشکل اینه که شما یک گره پدر برای فایلتون ندارید شما کل گره هایی که در بالا ساختین رو بین یک گره دیگه قرار بدین مثلا:


<?xml version="1.0" encoding="utf-8" ?> اختیاری است ولی باشد بهتر است
<MenuItem Id='0' Title='صفحه اصلی'>
گره هایی که خودتون با کد بالا ساختین رو در اینجا قرار بدین
</MenuItem>

این هم شد گره پدر شما.
موفق باشید

khz-web1
یک شنبه 19 مهر 1388, 11:39 صبح
دوستان مشکلم حل شد با این مقاله....
http://www.codeproject.com/KB/webforms/bindmenu.aspx

از شما بابت راهنماییتون ممنون هستم (ولی قبل از این هم این چیزهایی رو که دادید رو تست کردم!)
دوستانی هم که با ساخت منو مشکل دارند ... توصیه می کنم حتمی این مقاله رو بخونن