Новое окно в ASP меню нажмите - PullRequest
0 голосов
/ 30 октября 2009

У меня есть страница интрасети, в которой используется Site.map ASP Элемент управления меню, который управляет всем сайтом.

Для большинства моих страниц отлично подать пользователя на новую страницу контента в текущем окне.

Однако для некоторых крупных отчетов просто недостаточно места для удобного отображения всей страницы.

Возможно ли при щелчке по определенным узлам в идеале появляется окно new или pop up, дающее мне возможность выбрать размер.

Пример кода для файла карты сайта

<siteMap>
  <siteMapNode title="Top" >
    <siteMapNode title="Menu 1" >
      <siteMapNode title="Report" url="~/Iwantthisurl-to-pop-out.aspx"/>
    </siteMapNode>
  </siteMapNode>
</siteMap>

Редактировать

После следования URL Здесь в комментариях я гораздо ближе. Однако я получаю сообщение об ошибке.

Protected Sub Menu1_MenuItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MenuEventArgs)


    Dim address As String = String.Empty
    Dim heigth As String = String.Empty
    Dim width As String = String.Empty
    Dim title As String = String.Empty
    Dim url As String = String.Empty
    Dim poptest As String = String.Empty

    poptest = CStr(DataBinder.Eval(e.Item.DataItem, "url"))


    If String.IsNullOrEmpty(poptest) Then

        address = CStr(DataBinder.Eval(e.Item.DataItem, "address"))
        heigth = CStr(DataBinder.Eval(e.Item.DataItem, "heigth"))
        width = CStr(DataBinder.Eval(e.Item.DataItem, "width"))
        title = CStr(DataBinder.Eval(e.Item.DataItem, "title"))
        url = CStr(DataBinder.Eval(e.Item.DataItem, "url"))
    Else

    End If

По какой-то причине он привязывает только стандартные атрибуты sitemap (title, url и т. Д.) И ошибки ( DataBinding: 'System.Web.SiteMapNode' не содержит свойства с именем 'address' ) когда я ставлю точку останова, я могу прочитать стандартные атрибуты, а пользовательские атрибуты, которые, кажется, проходят,

Так расстраивает, как я так близко !!

Редактировать 2:

Нашел способ открыть другое окно с помощью команды _blank, но он не дает мне возможности настроить размер окна, удалить адресные строки и т. Д. Если кто-нибудь сможет заставить работать пример связанной страницы, я бы хотел увидеть пример!

Редактировать 3:

Убедил, что это как-то связано с этими строками

title = ((SiteMapNode)(e.Item.DataItem))["title"]; 

не должно быть

title = ((System.Web.SiteMapNode)(e.Item.DataItem)).Title;

при использовании этого параметра для нестандартных параметров карты сайта (адрес, высота и т. Д.) Выдает ошибки?

Ответы [ 2 ]

2 голосов
/ 30 октября 2009

если вы используете JavaScript, вы можете использовать что-то вроде

function popup()
{
       var url = '/thepagetopopup.aspx';
       window.showModalDialog(url, 'Value', 'dialogHeight:600px,dialogWidth:1000px;');
       //or
       window.open(url, 'value', 'dialogHeight:600px,dialogWidth:800px');
       return false;
}

, затем вызовите функцию на вашем контроле asp.

надеюсь, это поможет

0 голосов
/ 30 октября 2009

Я думаю, что вы можете сделать это без javascript, на вашей странице карты сайта добавьте attibute с именем target для каждого узла (установите значение _blank, если хотите всплывающее окно), а в своем шаблоне основного сайта просто сделайте следующее

<asp:SiteMapPath ID="SiteMapPath1" runat="server">
  <RootNodeTemplate>
<a href='#Eval("url")' target="_blank"><%# Eval("title") %></a>
     <asp:LinkButton ID="LinkButton1" runat="server" 
                     Text='<%# Eval("title") %>' 
                     CommandArgument='<%# Eval("url") %>' 
target='<%# Eval("target") %>' 
                     OnCommand="LinkButton1_Command">
     </asp:LinkButton>
  </RootNodeTemplate>
</asp:SiteMapPath>
...