2009-09-28 51 views
1

我使用Repeater Control來顯示我的WebSite中的數據。我在Repeater Control中使用HyperLink來顯示數據庫中表格的一個字段。在ASP.net中的Repeater控件中使用QueryString發送字符串

當您單擊時,我希望該鏈接轉到另一個頁面並使用QueryString將字符串發送到該[頁面]。我不知道我是怎麼做到的 - 你能解釋一下怎麼做嗎?

我在ASP.net中使用Linq。

回答

5
<asp:HyperLink ID="HyperLink3" NavigateUrl='<%#Eval("ID_Message","~/ADMIN/Reply.aspx?ID={0}") %>' runat="server">OK</asp:HyperLink> 
1

下面是Repeater中的ItemTemplate中的一個示例,爲您提供一個想法。經度和緯度來自數據庫

<a target="_blank" class="newwindow" href="http://maps.google.com/maps?saddr=<%=addressTextBox.Text%>&daddr=<%#Eval("Latitude")%>,<%#Eval("Longitude") %>"> 
2

讓我們從QueryString的格式開始。 QueryString看起來像下面這樣:

http://www.mysite.com/somepage.aspx?id=? 

對!

當然,你可以在查詢字符串使用「&」符號傳遞多個參數,如下圖所示:

http://www.mysite.com/somepage.aspx?id=?&foo=? 

現在,你需要做同樣的事情,但Repeater控件內使用從值數據庫。

<asp:Repeater> 

<ItemTemplate> 
<a href="http://www.mysite.com/somepage.aspx?id=<%# Eval("Id") #>"><Eval("Title")</a> 
</ItemTemplate> 
</asp:Repeater> 

中的eval(「ID」)是從您的數據源的屬性,它可以爲數據集,數據表,實體類等

的,當你綁定Repeater控件< %# Eval("Id") #>將被調用。使用Repeater.DataBind()方法綁定Repeater控件。

獲取其他頁面上的ID:

if(Request.QueryString["id"] != null) 
{ 
    string id = Request.QueryString["id"] as String; 
} 
+0

我會改變?id =?到像?id = 0,因爲使用?作爲一個佔位符可能會讓某人不知道查詢字符串如何工作。 – 2009-09-28 22:14:40

+0

謝謝傑森指出:) – azamsharp 2009-09-28 22:19:29

+0

當我發送此ID,我如何得到該頁 – 2009-09-29 12:15:46

0

使用eval方法來現場評估到您呈現的頁面。例如,您有一個產品表,並且您需要一個將產品ID傳遞給showproduct.aspx的鏈接。檢查下面的例子:

<a href='showproduct.aspx?productid=<%#Eval("ProductID")%>'>View Details</a> 

在showproduct.aspx使用Page.Request.QueryString收集得到的產品:

string productId = Page.Request.QueryString["productid"].ToString(); 
1

既然大家都已經發布代碼嵌入在所有的評價aspx頁面我會在後面的代碼中提供所需的所有代碼(我更喜歡所有代碼)。

首先在你的中繼器,你將需要一個控制:

<asp:Repeater> 
    <ItemTemplate> 
     <asp:HyperLink ID="hrefLink" 
      href="http://www.mysite.com/somepage.aspx?id={0}&more={1}" 
      OnDataBinding="hrefLink_DataBinding"> 
     </asp:HyperLink> 
    </ItemTemplate> 
</asp:Repeater> 

然後在你後面的代碼實現數據綁定填寫您的聯繫信息:

protected void hrefLink_DataBinding(object sender, System.EventArgs e) 
{ 
    HyperLink link = (HyperLink)(sender); 
    // Fill in your links details 
    link.NavigateUrl = string.Format(link.NavigateUrl, 
     Eval("ID").ToString(), Eval("More").ToString()); 
    link.Text = Eval("LinkTitle").ToString();   
} 

到這樣做的好處是,您可以在需要時輕鬆添加更多邏輯,而無需使用大量代碼混淆您的aspx頁面。我更喜歡這種內聯方法,但它們都是有效的解決方案,而且更偏好於此。

如果您不想預定義鏈接的位置,您可以更改上面的數據綁定代碼,將整個NavigateUrl重寫爲任何您想要的。所以根據一些評估值,你可以重定向到不同的頁面。這是最具定製性的解決方案。

備註:如果不需要,請確保在中繼器上關閉ViewState,因爲它會導致大量雜亂。

相關問題