2013-02-19 102 views
2

我需要在ASP.NET網頁(aspx)內創建一個小窗口,當你點擊用戶名時,它顯示用戶名列表,我需要一個新的瀏覽器窗口(不是選項卡)才能打開特定的大小。我可以處理打開新的瀏覽器窗口,假設我用什麼控制我陷入落後的功能,我可以調用代碼....列表超鏈接,按鈕,無論打開新的瀏覽器窗口

string url = "http://www.dotnetcurry.com"; 
ScriptManager.RegisterStartupScript(this, this.GetType(), "OpenWin", "<script>openNewWin ('" + url + "')</script>", false); 

下面是在該鏈接的頁面的標記。

<script language="javascript" type="text/javascript"> 
     function openNewWin(url) { 
      var x = window.open(url, 'mynewwin', 'width=600,height=600,toolbar=1'); 
      x.focus(); 
     } 
</script> 

1)我應該使用這個問題是什麼控制,什麼是結構看起來像後,我得到了相應的用戶名從數據庫返回的?

這裏是最接近的我來...這個代碼使用ASP.NET項目符號列表,我試圖綁定到一個HTML鏈接列表,我想反而不是任何地方點,但讓我到代碼隱藏。相反,這段代碼實際上呈現頁面的HTML上(它不會被解析爲超鏈接。)

protected void Page_Load(object sender, EventArgs e) 
    { 
     UsersBulletedList.DataSource = theContext.GetOnlineFavorites(4); 
     UsersBulletedList.DataBind(); 
    } 

    public IQueryable<String> GetOnlineFavorites(int theUserID) 
    { 
     List<String> theUserList = new List<String>(); 
     IQueryable<Favorite> theListOfFavorites= this.ObjectContext.Favorites.Where(f => f.SiteUserID == theUserID); 
     foreach (Favorite theFavorite in theListOfFavorites) 
     { 
      string theUserName = this.ObjectContext.SiteUsers.Where(su => su.SiteUserID == theFavorite.FriendID && su.LoggedIn == true).FirstOrDefault().UserName; 
      yourOnlineFavorites.Add("<a href='RealTimeConversation.aspx?UserName=" + theUserName + "'>" + theUserName + "</a>"); 
      //this needs to help me get into a codebehind method instead of linking to another page. 
     } 
     return yourOnlineFavorites.AsQueryable(); 
    } 
+0

Winforms,WPF,web?根據你所描述的,看起來(至少對我來說)datagridview/gridview可能是一個好方法。 – Brian 2013-02-19 17:52:36

回答

2

我將創建您的網頁上RepeaterGetOnlineFavorites方法綁定你的結果。在Repeater的內部,將LinkButtonItemCommand事件放在一起,該事件將您的腳本添加到頁面。

標記:

<asp:Repeater ID="repeater" runat="server" OnItemCommand="repeater_ItemCommand"> 
    <ItemTemplate> 
     <asp:LinkButton runat="server" ID="linkButton" 
      Text='<%# Eval("PropertyFromBindingCollection") %>' 
      CommandName="OpenWindow" 
      CommandArgument='<%# Eval("AnotherProperty") %>' /> 
    </ItemTemplate> 
</asp:Repeater> 

在這裏,LinkButtonText財產和RepeaterCommandArgument將被設置爲從您的收藏的一些屬性。

代碼背後:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     repeater.DataSource = theContext.GetOnlineFavorites(4); 
     repeater.DataBind(); 
    } 
} 

protected void repeater_ItemCommand(object sender, RepeaterCommandEventArgs e) 
{ 
    if(e.CommandName == "OpenWindow") 
    { 
     string arg = e.CommandArgument; // this could be the url, or a userID to get favorites, or...? 
     //Your open window script 
    } 
} 

現在,當用戶點擊了LinkBut​​ton之一,它會觸發ItemCommand事件爲Repeater,檢查CommandName(上LinkBut​​ton的設置),然後拿到CommandArgument設置在LinkButton。如果將CommandArgument設置爲URL,則可以在OpenWin腳本中使用它,否則使用您設置的任何數據作爲參數來獲取要打開的URL。

+0

這太棒了!一切都完美無缺地工作,但由於某種原因,打開的窗口腳本沒有打開窗口(我可以一步一步看到它執行代碼,但沒有任何反應),如果你能幫我找出原因,綠色的複選標記是你的! :) – Kulingar 2013-02-19 18:56:35

+0

我可以看到你添加的腳本缺少'type =「text/javascript」'屬性。我不確定這是否與您的問題有關。如果您在瀏覽器中打開F12開發工具,該腳本是否在頁面上添加了該腳本? – 2013-02-19 19:07:30

+0

是的。同時添加一個常規的按鈕和一個「點擊」事件,該功能正常工作,但由於某種原因不是這樣。 – Kulingar 2013-02-19 19:23:49

相關問題