【问题标题】:New window on ASP Menu clickASP 菜单上的新窗口单击
【发布时间】:2009-10-30 12:40:46
【问题描述】:

我有一个 Intranet 页面,它有一个驱动整个站点的 Site.map 驱动 ASP 菜单控件。

对于我的大多数页面,将用户推送到当前窗口内的新内容页面非常棒。

但是对于某些大型报表,根本没有足够的空间来舒适地显示整个页面。

是否有可能在单击某些节点时出现newpop up 窗口,让我可以选择大小。

站点地图文件的示例代码

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

编辑,

在 cmets 中关注 url Here 之后,我离得更近了。但是我遇到了一个错误。

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

由于某种原因,它只绑定标准站点地图属性(标题、url 等)和错误(DataBinding: 'System.Web.SiteMapNode' 不包含名称为 'address' 的属性 ) 当在其中放置断点时,我可以读取标准属性,它的自定义属性似乎正在通过

离得这么近,真令人沮丧!

编辑 2:

找到了一种使用 _blank 命令打开另一个窗口的方法,但我无法调整窗口大小和删除地址栏等。如果有人可以让链接页面的示例正常工作,我很乐意看到一个例子!

编辑 3:

说服它与这些台词有关

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

不应该

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

但是,当将它用于非标准站点地图参数(地址、高度等)时会引发错误?

【问题讨论】:

    标签: asp.net reporting-services aspmenu


    【解决方案1】:

    如果你使用 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控件上的函数。

    希望对你有帮助

    【讨论】:

    • 不太熟悉Java,我会在哪里添加这个?到 Web.sitemap 文件?
    • 你能贴一些代码吗?这不是java。它是 JavaScript。这是一种用于网页的客户端脚本语言。
    • 看看这个。这是非常基本的。 coloboxp.wordpress.com/2007/09/14/…
    【解决方案2】:

    我认为你可以在没有 javascript 的情况下做到这一点,在你的站点地图页面中为每个节点添加一个名为 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>
    

    【讨论】:

      猜你喜欢
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 2023-03-19
      • 2016-01-26
      • 1970-01-01
      相关资源
      最近更新 更多