2009-09-28 4 views
1

Repeater 컨트롤을 사용하여 WebSite의 데이터를 표시합니다. 데이터베이스에서 내 테이블의 한 필드를 표시하기 위해 Repeater Control에서 HyperLink를 사용합니다.ASP.net에서 Repeater Control의 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 컨트롤의 내부와의 값을 사용하여 아래 그림과 같이 물론

당신은 "&"기호를 사용하여 QueryString을 여러 매개 변수를 전달할 수 있습니다 데이터 베이스.

<asp:Repeater> 

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

평가 후면 ("ID")는 데이터 집합, DataTable을, 엔티티 클래스 등이 될 수있는 데이터 원본의 속성입니다

당신이 Repeater 컨트롤을 바인딩 할 때 < %# Eval("Id") #>를 호출 할 것이다. Repeater.DataBind() 메서드를 사용하여 Repeater 컨트롤을 바인딩합니다.

다른 페이지의 ID를 얻기 :

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

내가 바꿀 까? id =? 같은 것을? id = 0, 사용하고 있기 때문에? 자리 표시 자로 인해 쿼리 문자열이 어떻게 작동하는지 몰라도 혼란 스러울 수 있습니다. –

+0

감사합니다. 제이슨이 그것을 지적 해주었습니다 :) – azamsharp

+0

이 ID를 보낼 때, 그 페이지에서 어떻게 얻을 수 있습니까? –

0

사용 평가 방법을 당신의 렌더링 된 페이지에 필드를 평가. 예를 들어 Products 테이블이 있고 showproduct.aspx에 제품의 ID를 전달하는 링크가 필요합니다. 에 포함 된 모든 평가를

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

모든 사람이 게시 한 이후 코드 :

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

showproduct.aspx 사용 Page.Request.QueryString 제품을 얻을 컬렉션 : 아래의 예를 확인 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를 해제해야합니다.

관련 문제