SiteMapProvider   zodpovězená otázka

VB.NET, SQL, ADO.NET, Algoritmy

Dobrý den,

tak mám zase problém.Upravuji siteprovidera, kterého jsem vyrobil podle návodu zde na tomto serveru, aby fungoval podle mých potřeb. Ale perou se mi tam mezi sebou 2 datareadery a já nevím co s tím ani nevím jestli jsem úpravu provedl dobrým směrem. Zde dávám kód a kdyby mi někdo odpověděl v čem dělám chybu nebo aspoň jestli jdu správným směrem byl bych velice rád :) [vím že kód je docela dlouhý ale prosím pomozte ;)]

web.config

                <add name="CategoriesSitemapProvider" type="SqlSiteMapProvider"

                     title="Topici" url="~/Default.aspx"

                     connectionStringName="GrrConnectionString"

                     TopicCommand="SELECT [Id],[Topic] FROM [Topics] ORDER BY [Id]"

                     titleColumn="Topic"

                     urlColumn="Id" urlFormatString="~/ListTopic.aspx?Id={0}" 
                     
                     PostCommand="SELECT [Id],[Name] FROM [Posts] WHERE IdTopic={0}"

                     PosttitleColumn="Name"

                     PosturlColumn="Id" PosturlFormatString="~/Default.aspx?Id={0}" />

provider class

Imports Microsoft.VisualBasic

Imports System.Web

Imports System.Data.SqlClient



Public Class SqlSiteMapProvider

    Inherits StaticSiteMapProvider




    Private root As SiteMapNode

    Public Overrides Function BuildSiteMap() As System.Web.SiteMapNode
        SyncLock Me



            If root Is Nothing Then         'pokud je třeba generovat, generujeme



                'vytvořit kořenovou položku

                root = New SiteMapNode(Me, Guid.NewGuid().ToString(), Me.Url, Me.Title)



                'podpoložky natáhnout z databáze

                Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings(Me.ConnectionStringName).ConnectionString)

                Dim com As New SqlCommand(Me.TopicCommand, con)
                Dim comP As New SqlCommand(Me.PostCommand, con)

                con.Open()

                Dim reader As SqlDataReader = com.ExecuteReader()       'provést dotaz
                Dim readerP As SqlDataReader = comP.ExecuteReader()


                While reader.Read()             'projít vrácené záznamy

                    Dim node As New SiteMapNode(Me, Guid.NewGuid().ToString(), String.Format(Me.UrlFormatString, reader(Me.UrlColumn)), reader(Me.TitleColumn))

                    AddNode(node, root)



                    While readerP.Read()
                        Dim nody As New SiteMapNode(Me, Guid.NewGuid().ToString(), String.Format(Me.PosturlFormatString, reader(Me.PosturlColumn)), reader(Me.PosttitleColumn))

                        AddNode(nody, root)
                    End While


                End While

                readerP.Close()
                reader.Close()
                'zavřít reader a spojení



                con.Close()



            End If



            Return root         'vrátíme kořenovou položku



        End SyncLock


    End Function

    Protected Overrides Function GetRootNodeCore() As System.Web.SiteMapNode
        Return BuildSiteMap()
    End Function
#Region "next"

    Private _PostCommand As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property PostCommand() As String

        Get

            Return _PostCommand

        End Get

        Set(ByVal value As String)

            _PostCommand = value

        End Set

    End Property


    Private _PosttitleColumn As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property PosttitleColumn() As String

        Get

            Return _PosttitleColumn

        End Get

        Set(ByVal value As String)

            _PosttitleColumn = value

        End Set

    End Property

    Private _PosturlColumn As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property PosturlColumn() As String

        Get

            Return _PosturlColumn

        End Get

        Set(ByVal value As String)

            _PosturlColumn = value

        End Set

    End Property

    Private _PosturlFormatString As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property PosturlFormatString() As String

        Get

            Return _PosturlFormatString

        End Get

        Set(ByVal value As String)

            _PosturlFormatString = value

        End Set

    End Property
#End Region

#Region "Properties and configuration"



    Private _title As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property Title() As String

        Get

            Return _title

        End Get

        Set(ByVal value As String)

            _title = value

        End Set

    End Property



    Private _url As String

    ''' <summary>
    ''' URL kořenové položky
    ''' </summary>

    Public Property Url() As String

        Get

            Return _url

        End Get

        Set(ByVal value As String)

            _url = value

        End Set

    End Property



    Private _connectionStringName As String

    ''' <summary>
    ''' Název connectionStringu, který použijeme k připojení do databáze
    ''' </summary>

    Public Property ConnectionStringName() As String

        Get

            Return _connectionStringName

        End Get

        Set(ByVal value As String)

            _connectionStringName = value

        End Set

    End Property



    Private _TopicCommand As String

    ''' <summary>
    ''' SQL příkaz, který vybere seznam položek
    ''' </summary>

    Public Property TopicCommand() As String

        Get

            Return _TopicCommand

        End Get

        Set(ByVal value As String)

            _TopicCommand = value

        End Set

    End Property



    Private _titleColumn As String

    ''' <summary>
    ''' Název sloupce s názvy stránek
    ''' </summary>

    Public Property TitleColumn() As String

        Get

            Return _titleColumn

        End Get

        Set(ByVal value As String)

            _titleColumn = value

        End Set

    End Property



    Private _urlColumn As String
    ''' <summary>
    ''' Název sloupce s hodnotami, které se budou dosazovat do URL
    ''' </summary>


    Public Property UrlColumn() As String

        Get

            Return _urlColumn

        End Get

        Set(ByVal value As String)

            _urlColumn = value

        End Set

    End Property



    Private _urlFormatString As String
    ''' <summary>
    ''' URL adresa, do které se budou dosazovat hodnoty z datbaáze
    ''' </summary>

    Public Property UrlFormatString() As String

        Get

            Return _urlFormatString

        End Get

        Set(ByVal value As String)

            _urlFormatString = value

        End Set

    End Property



    Public Overrides Sub Initialize(ByVal name As String, ByVal attributes As System.Collections.Specialized.NameValueCollection)

        MyBase.Initialize(name, attributes)


        If attributes("PostCommand") IsNot Nothing Then

            Me.Title = attributes("PostCommand")

        Else : Throw New ArgumentException("PostCommand")

        End If


        If attributes("PosttitleColumn") IsNot Nothing Then

            Me.Title = attributes("PosttitleColumn")

        Else : Throw New ArgumentException("PosttitleColumn")

        End If


        If attributes("PosturlColumn") IsNot Nothing Then

            Me.Title = attributes("PosturlColumn")

        Else : Throw New ArgumentException("PosturlColumn")

        End If


        If attributes("PosturlFormatString") IsNot Nothing Then

            Me.Title = attributes("PosturlFormatString")

        Else : Throw New ArgumentException("PosturlFormatString")

        End If


        'načíst hodnoty parametrů z konfigurace

        If attributes("title") IsNot Nothing Then

            Me.Title = attributes("title")

        Else : Throw New ArgumentException("title")

        End If



        If attributes("url") IsNot Nothing Then

            Me.Url = attributes("url")

        Else : Throw New ArgumentException("url")

        End If



        If attributes("connectionStringName") IsNot Nothing Then

            Me.ConnectionStringName = attributes("connectionStringName")

        Else : Throw New ArgumentException("connectionStringName")

        End If



        If attributes("TopicCommand") IsNot Nothing Then

            Me.TopicCommand = attributes("TopicCommand")

        Else : Throw New ArgumentException("TopicCommand")

        End If



        If attributes("titleColumn") IsNot Nothing Then

            Me.TitleColumn = attributes("titleColumn")

        Else : Throw New ArgumentException("titleColumn")

        End If



        If attributes("urlColumn") IsNot Nothing Then

            Me.UrlColumn = attributes("urlColumn")

        Else : Throw New ArgumentException("urlColumn")

        End If



        If attributes("urlFormatString") IsNot Nothing Then

            Me.UrlFormatString = attributes("urlFormatString")

        Else : Throw New ArgumentException("urlFormatString")

        End If

    End Sub

#End Region
End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Potíž je v tom, že vy chcete pro každé téma vylistovat seznam příspěvků. Takže musíte mít dva cykly v sobě a během čtení jednoho DataReaderu vytvářet pro každou položku nový a celý ho projít. To je dost nešikovné (mít otevřených víc datareaderů najednou sice jde, ale není to moc efektivní), proto bych celý problém rozdělil na 2 části:

1. Nejdřív si vytáhnout všechna témata a udělat kolekci Dictionary(Of Integer, SiteMapNode). Pro každý vrácený řádek vytvoříte objekt SiteMapNode, slinkujete ho s kořenovou položkou a nastavíte mu název, URL a jednoznačný klíč (třeba ID tématu). Pak tento objekt přidáte do té kolekce a jako identifikátor položky použijete ID tématu.

2. Pak si vytáhnete úplně všechny příspěvky, projdete je a pro každý příspěvek vytvoříte zase objekt SiteMapNode, opět mu nastavíte název, URL atd. a v té kolekci si podle ID z databáze najdete rodičovskou SiteMapNode pro tento příspěvek. Pak je slinkujete dohromady.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

nevím jestli jsem pochopil dobře to slovo slinkujete znamená to doufám např kodově toto

AddNode(a,root)

pokud ne tak jsem uplně blbej.

No a zasekl jsem se na přidávání příspěvků do témat, pokud totiž vytvářím topici tím to kódem

                While TopicReader.Read()

                    Dim Topic As New SiteMapNode(Me, TopicReader(Me.UrlTopic), String.Format(Me.UrlFormatTopic, TopicReader(Me.UrlTopic)), TopicReader(Me.TitleTopic))

                    AddNode(Topic, root)

                    List.Add(TopicReader(Me.UrlTopic), Topic)

                End While

tak se každá topiková sitemapnode jmenuje stejně tudíš když pak chci přidat příspěvek tímto kódem

                While PostReader.Read()

                    Dim Post As New SiteMapNode(Me, Guid.NewGuid().ToString(), String.Format(Me.UrlFormatPost, PostReader(Me.UrlPost)), PostReader(Me.TitlePost))

                    
                    Dim a As Integer = PostReader(Me.UrlPost)

                    Dim c As SiteMapNode = List(a)

                    AddNode(Post, c)

                End While

tak to není možné protože každý topikový objekt sitemapnode má stejný název to jest topic a z toho vyplívá že jsem to asi celé zase špatně pochopil a nevím co dál .... zde bych ještě dal celý kód který jsem vytvořil .... achjo :(

<add name="CategoriesSitemapProvider" type="SqlSiteMapProvider"

                     TitleRoot="Seznam" UrlRoot="~/Default.aspx"

                     ConnectionStringName="GrrConnectionString"

                     CommandTopic="SELECT [Id],[Topic] FROM [Topics] ORDER BY [Id]"
                     
                     TitleTopic="Topic"

                     UrlTopic="Id" UrlFormatTopic="~/ListTopic.aspx?Id={0}" 
                     
                     CommandPost="SELECT [Id],[Name],[IdTopic] FROM [Posts]"

                     TitlePost="Name"
                     
                     IdTopicPost ="IdTopic"

                     UrlPost="Id" UrlFormatPost="~/Default.aspx?Id={0}" />

a

Imports Microsoft.VisualBasic

Imports System.Web

Imports System.Data.SqlClient
Imports System.Collections.Generic



Public Class SqlSiteMapProvider

    Inherits StaticSiteMapProvider




    Private root As SiteMapNode

    Public Overrides Function BuildSiteMap() As System.Web.SiteMapNode
        SyncLock Me



            If root Is Nothing Then         'pokud je třeba generovat, generujeme

                'vytvořit kořenovou položku

                root = New SiteMapNode(Me, Guid.NewGuid().ToString(), Me.UrlRoot, Me.TitleRoot)

                'podpoložky natáhnout z databáze

                Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings(Me.ConnectionStringName).ConnectionString)

                Dim TopicCom As New SqlCommand(Me.CommandTopic, con)

                Dim PostCom As New SqlCommand(Me.CommandPost, con)

                con.Open()

                Dim TopicReader As SqlDataReader = TopicCom.ExecuteReader()

                Dim List As New Dictionary(Of Integer, SiteMapNode)

                While TopicReader.Read()

                    Dim Topic As New SiteMapNode(Me, TopicReader(Me.UrlTopic), String.Format(Me.UrlFormatTopic, TopicReader(Me.UrlTopic)), TopicReader(Me.TitleTopic))

                    AddNode(Topic, root)

                    List.Add(TopicReader(Me.UrlTopic), Topic)

                End While

                TopicReader.Close()

                Dim PostReader As SqlDataReader = PostCom.ExecuteReader()

                While PostReader.Read()

                    Dim Post As New SiteMapNode(Me, Guid.NewGuid().ToString(), String.Format(Me.UrlFormatPost, PostReader(Me.UrlPost)), PostReader(Me.TitlePost))

                    
                    Dim a As Integer = PostReader(Me.UrlPost)

                    Dim c As SiteMapNode = List(a)

                    AddNode(Post, c)

                End While

                PostReader.Close()

                con.Close()



            End If



            Return root         'vrátíme kořenovou položku



        End SyncLock


    End Function

    Protected Overrides Function GetRootNodeCore() As System.Web.SiteMapNode
        Return BuildSiteMap()
    End Function

#Region "Declared"

#Region "Root and ConnectionString"

    Private _TitleRoot As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property TitleRoot() As String

        Get

            Return _TitleRoot

        End Get

        Set(ByVal value As String)

            _TitleRoot = value

        End Set

    End Property

    Private _UrlRoot As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property UrlRoot() As String

        Get

            Return _UrlRoot

        End Get

        Set(ByVal value As String)

            _UrlRoot = value

        End Set

    End Property

    Private _ConnectionStringName As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property ConnectionStringName() As String

        Get

            Return _ConnectionStringName

        End Get

        Set(ByVal value As String)

            _ConnectionStringName = value

        End Set

    End Property

#End Region

#Region "Topic"

    Private _CommandTopic As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property CommandTopic() As String

        Get

            Return _CommandTopic

        End Get

        Set(ByVal value As String)

            _CommandTopic = value

        End Set

    End Property

    Private _TitleTopic As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property TitleTopic() As String

        Get

            Return _TitleTopic

        End Get

        Set(ByVal value As String)

            _TitleTopic = value

        End Set

    End Property

    Private _UrlTopic As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property UrlTopic() As String

        Get

            Return _UrlTopic

        End Get

        Set(ByVal value As String)

            _UrlTopic = value

        End Set

    End Property

    Private _UrlFormatTopic As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property UrlFormatTopic() As String

        Get

            Return _UrlFormatTopic

        End Get

        Set(ByVal value As String)

            _UrlFormatTopic = value

        End Set

    End Property

#End Region

#Region "Post"

    Private _CommandPost As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property CommandPost() As String

        Get

            Return _CommandPost

        End Get

        Set(ByVal value As String)

            _CommandPost = value

        End Set

    End Property

    Private _TitlePost As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property TitlePost() As String

        Get

            Return _TitlePost

        End Get

        Set(ByVal value As String)

            _TitlePost = value

        End Set

    End Property

    Private _IdTopicPost As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property IdTopicPost() As String

        Get

            Return _IdTopicPost

        End Get

        Set(ByVal value As String)

            _IdTopicPost = value

        End Set

    End Property

    Private _UrlPost As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property UrlPost() As String

        Get

            Return _UrlPost

        End Get

        Set(ByVal value As String)

            _UrlPost = value

        End Set

    End Property

    Private _UrlFormatPost As String

    ''' <summary>
    ''' Název kořenové položky
    ''' </summary>

    Public Property UrlFormatPost() As String

        Get

            Return _UrlFormatPost

        End Get

        Set(ByVal value As String)

            _UrlFormatPost = value

        End Set

    End Property

#End Region

#End Region

#Region "Initialize"

    Public Overrides Sub Initialize(ByVal name As String, ByVal attributes As System.Collections.Specialized.NameValueCollection)

        MyBase.Initialize(name, attributes)

        'načíst hodnoty parametrů z konfigurace

        'Root and ConnectionString

        If attributes("TitleRoot") IsNot Nothing Then

            Me.TitleRoot = attributes("TitleRoot")

        Else : Throw New ArgumentException("TitleRoot")

        End If

        If attributes("UrlRoot") IsNot Nothing Then

            Me.UrlRoot = attributes("UrlRoot")

        Else : Throw New ArgumentException("UrlRoot")

        End If

        If attributes("ConnectionStringName") IsNot Nothing Then

            Me.ConnectionStringName = attributes("ConnectionStringName")

        Else : Throw New ArgumentException("ConnectionStringName")

        End If

        'Topic

        If attributes("CommandTopic") IsNot Nothing Then

            Me.CommandTopic = attributes("CommandTopic")

        Else : Throw New ArgumentException("CommandTopic")

        End If

        If attributes("TitleTopic") IsNot Nothing Then

            Me.TitleTopic = attributes("TitleTopic")

        Else : Throw New ArgumentException("TitleTopic")

        End If

        If attributes("UrlTopic") IsNot Nothing Then

            Me.UrlTopic = attributes("UrlTopic")

        Else : Throw New ArgumentException("UrlTopic")

        End If

        If attributes("UrlFormatTopic") IsNot Nothing Then

            Me.UrlFormatTopic = attributes("UrlFormatTopic")

        Else : Throw New ArgumentException("UrlFormatTopic")

        End If

        'Post

        If attributes("CommandPost") IsNot Nothing Then

            Me.CommandPost = attributes("CommandPost")

        Else : Throw New ArgumentException("CommandPost")

        End If

        If attributes("TitlePost") IsNot Nothing Then

            Me.TitlePost = attributes("TitlePost")

        Else : Throw New ArgumentException("TitlePost")

        End If

        If attributes("IdTopicPost") IsNot Nothing Then

            Me.IdTopicPost = attributes("IdTopicPost")

        Else : Throw New ArgumentException("IdTopicPost")

        End If

        If attributes("UrlPost") IsNot Nothing Then

            Me.UrlPost = attributes("UrlPost")

        Else : Throw New ArgumentException("UrlPost")

        End If

        If attributes("UrlFormatPost") IsNot Nothing Then

            Me.UrlFormatPost = attributes("UrlFormatPost")

        Else : Throw New ArgumentException("UrlFormatPost")

        End If

    End Sub

#End Region

End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět

omlouvám se omlouvám blbá chyba nalezena vše už funguje jak má :-D děkuji za pomoc mnohokrát :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Můžu se zeptat, v čem byla ta chyba? Řeším podobný problém.

Děkuji Martin

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tu chybu si už přesně nepamatuji ,ale možná by jste to mohl najít v tomto kódu (myslím, že je to on). Předělával jsem to do c#, ale jinak by to mělo snad být to samé.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Data.SqlClient;
using System.Collections.Generic;




public class SqlSiteMapProvider:StaticSiteMapProvider
{
    private SiteMapNode root = null;
    private Dictionary<int, SiteMapNode> list = new Dictionary<int, SiteMapNode>();

    protected override void Clear() {
        lock (this)
        {
            root = null;
            list.Clear();
            base.Clear();
        }
    }

    public override System.Web.SiteMapNode BuildSiteMap(){
        lock (this) {

            //Clear();
            if (root == null) {
                Clear();


                //kořenová položka
                 root = new SiteMapNode(this,Guid.NewGuid().ToString(),this.UrlRoot,this.TitleRoot);

                //podpoložky

                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString);

                SqlCommand topicCom = new SqlCommand(this.CommandTopic,con);

                SqlCommand postCom = new SqlCommand(this.CommandPost,con);

                con.Open();

                SqlDataReader topicReader = topicCom.ExecuteReader();

                SiteMapNode top = new SiteMapNode(this, Guid.NewGuid().ToString(), this.UrlRoot, this.TitleRoot);

                AddNode(top, root);

                while (topicReader.Read()){
                    SiteMapNode topic = new SiteMapNode(this, Guid.NewGuid().ToString(), null, topicReader[this.TitleTopic].ToString(), topicReader[this.TitleTopic].ToString());

                    AddNode(topic, root);

                    list.Add( Convert.ToInt32(topicReader[this.UrlTopic]), topic);
                }

                topicReader.Close();

                SqlDataReader postReader = postCom.ExecuteReader();

                while (postReader.Read()) {

                    SiteMapNode post = new SiteMapNode(this, Guid.NewGuid().ToString(), string.Format(this.UrlFormatPost, postReader[this.UrlPost]), postReader[this.TitlePost].ToString(), postReader[this.TitlePost].ToString());

                    SiteMapNode parent = list[Convert.ToInt32(postReader[this.IdTopicPost])];

                    AddNode(post, parent);
                }
                postReader.Close();

                con.Close();
            }

            return root;

        }
    }
    protected override SiteMapNode GetRootNodeCore()
    {
        return BuildSiteMap();
    }

    #region "Properties and configuration"



    private string _titleRoot;
    public string  TitleRoot{
        get { return _titleRoot; }
        set { _titleRoot = value; }
    }

    private string _urlRoot;
    public string UrlRoot{
        get { return _urlRoot; }
        set { _urlRoot = value; }
    }

    private string _connectionStringName;
    public string ConnectionStringName {
        get { return _connectionStringName; }
        set { _connectionStringName = value; }
    }


    private string _commandTopic;
    public string CommandTopic {
        get { return _commandTopic; }
        set { _commandTopic = value; }
    }

    private string _titleTopic;
    public string TitleTopic {
        get { return _titleTopic; }
        set { _titleTopic  = value; }
    }

    private string _urlTopci;
    public string UrlTopic {
        get { return _urlTopci ; }
        set { _urlTopci = value; }
    }

    private string _urlFormatTopic;
    public string UrlFormatTopic {
        get { return _urlFormatTopic ; }
        set { _urlFormatTopic = value; }
    }

    private string _commandPost;
    public string CommandPost {
        get { return _commandPost; }
        set { _commandPost = value; }
    }

    private string _titlePost;
    public string TitlePost {
        get { return _titlePost; }
        set { _titlePost = value; }
    }

    private string _idTopicPost;
    public string IdTopicPost {
        get { return _idTopicPost; }
        set { _idTopicPost = value; }
    }

    private string _urlPost;
    public string UrlPost {
        get { return _urlPost; }
        set { _urlPost = value; }
    }

    private string _urlFormatPost;
    public string UrlFormatPost {
        get { return _urlFormatPost; }
        set { _urlFormatPost = value; }
    }

#endregion

public override void Initialize(string name,System.Collections.Specialized.NameValueCollection attributes){
    base.Initialize(name, attributes);


    if (attributes["titleRoot"] != null)
    {

        this.TitleRoot = attributes["titleRoot"];

    }

    else throw new ArgumentException("titleRoot");

    if (attributes["urlRoot"] != null)
    {

        this.UrlRoot = attributes["urlRoot"];

    }

    else throw new ArgumentException("urlRoot");

    if (attributes["connectionStringName"] != null)
    {

        this.ConnectionStringName = attributes["connectionStringName"];

    }

    else throw new ArgumentException("connectionStringName");

    if (attributes["commandTopic"] != null)
    {

        this.CommandTopic = attributes["commandTopic"];

    }

    else throw new ArgumentException("commandTopic");


    if (attributes["titleTopic"] != null)
    {

        this.TitleTopic = attributes["titleTopic"];

    }

    else throw new ArgumentException("titleTopic");


    if (attributes["urlTopic"] != null)
    {

        this.UrlTopic = attributes["urlTopic"];

    }

    else throw new ArgumentException("urlTopic");


    if (attributes["urlFormatTopic"] != null)
    {

        this.UrlFormatTopic = attributes["urlFormatTopic"];

    }

    else throw new ArgumentException("urlFormatTopic");


    if (attributes["commandPost"] != null)
    {

        this.CommandPost = attributes["commandPost"];

    }

    else throw new ArgumentException("commandPost");


    if (attributes["titlePost"] != null)
    {

        this.TitlePost = attributes["titlePost"];

    }

    else throw new ArgumentException("titlePost");


    if (attributes["idTopicPost"] != null)
    {

        this.IdTopicPost = attributes["idTopicPost"];

    }

    else throw new ArgumentException("idTopicPost");


    if (attributes["urlPost"] != null)
    {

        this.UrlPost = attributes["urlPost"];

    }

    else throw new ArgumentException("urlPost");


    if (attributes["urlFormatPost"] != null)
    {

        this.UrlFormatPost = attributes["urlFormatPost"];

    }

    else throw new ArgumentException("urlFormatPost");
}    

}  

projistotu ještě v configuračním souboru :

<siteMap enabled="true" defaultProvider="MenuSitemapProvider">

            <providers>

                <clear/>

                <add name="MySitemapProvider" type="System.Web.XmlSiteMapProvider"

                     siteMapFile="Menu.sitemap" securityTrimmingEnabled="false" />
               
                <add name="MenuSitemapProvider" type="SqlSiteMapProvider"

                     titleRoot="Úvod" urlRoot="~/Default.aspx"

                     connectionStringName="GrrConnectionString"

                     commandTopic="SELECT [Id],[Topic] FROM [Topics] ORDER BY [Id]"

                     titleTopic="Topic"

                     urlTopic="Id" urlFormatTopic="~/ListTopic.aspx?Id={0}"

                     commandPost="SELECT [Id],[Name],[IdTopic] FROM [Posts]"

                     titlePost="Name"

                     idTopicPost="IdTopic"

                     urlPost="Id" urlFormatPost="~/Post.aspx?Id={0}" />

            </providers>

        </siteMap>

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Moc děkuji, už funguje. Martin

nahlásit spamnahlásit spam 0 odpovědětodpovědět

není zač ;)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback