如何不使用让menu控件不回发(postback)

<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

写网站首页程序的导航,要用asp.net2.0 的下menu控件,因为绑定数据库十分方便,不过有个问题,就是我采用的iframe来跳转页面,不想整个首页都跳转,不过发现menu控件没有控制回发的属性,每单击就回发一次,挺麻烦的。后来想到一个曲折来实现的办法,在text属性上做文章,代码如下:

index.aspx页面:

.....

< scriptlanguage = javascript >

functionOpenNewWindow(strUrl)
{
document.all.UrlRedirect.src
= strUrl;
}

</ script >

< asp:MenuID = " Menuindex " runat = " server " Orientation = " Horizontal " >
</ asp:Menu >

....

< iframeid = " UrlRedirect " name = " UrlRedirect " ></ iframe >

.....

index.aspx.cs

......

protected void Page_Load( object sender,EventArgse)
{
InitNavigationTree(Menuindex.Items,
" 0 " );
}

private void InitNavigationTree(MenuItemCollectionmenuItemCollection, string sParentID)
{

DataViewdvw
= new DataView();

MenuItemnodTemp;

dvw.Table
= getDataAll( " select*fromF_menuwhereF_PARENTMENUGUID=' " + sParentID + " 'orderbyF_ORDER " );
foreach (DataRowViewdrv in dvw)
{

nodTemp
= new MenuItem();
nodTemp.Value
= drv[ " F_MENUGUID " ].ToString();
nodTemp.Text
= GetMenuText(drv[ " F_LINKPAGE " ].ToString(),drv[ " F_MENUNAME " ].ToString());
menuItemCollection.Add(nodTemp);
InitNavigationTree(nodTemp.ChildItems,nodTemp.Value);
}

}

private string GetMenuText( string linkTxt, string nameTxt)
{
string temp = " <astyle='cursor:hand'onclick=OpenNewWindow(' " + linkTxt + " ')> " + nameTxt + " </a> " ;
return temp;
}

..........

这样menu就不回发了,而只会调用菜单文本上的那个onclick事件。

注:getDataAll 方法是获得菜单表数据的方法,在此省略了.

你可能感兴趣的:(JavaScript,C++,c,F#,asp)