문제

지금은 텍스트 상자와 버튼이있는 검색 페이지를 구성하고 있으며 나중에 필터 결과를 드롭 다운했을 것입니다. 내 버튼의 PostBackUrl이 내 검색 페이지 (~/search.aspx)로 설정되어 있습니다. 텍스트 상자의 값을 검색 페이지로 전달하는 쉬운 방법이 있습니까?

도움이 되었습니까?

해결책

버튼에 PostBackUrl이 설정된 경우 첫 페이지의 검색 상자 필드 및 해당 페이지의 다른 양식 필드가 이미 검색 페이지에 게시되어 있습니다. 트릭은 search.aspx 페이지의 코드-비인드에서 그들에게 액세스하는 것입니다.

if (Page.PreviousPage != null)
{
    TextBox SourceTextBox = 
        (TextBox)Page.PreviousPage.FindControl("TextBox1");
    if (SourceTextBox != null)
    {
        Label1.Text = SourceTextBox.Text;
    }
}

그것은 한 가지 방법입니다. search.aspx 페이지 상단에 이전 PageType 지시를 사용하는 것과 같은 바로 가기도 있습니다.

<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %> 

첫 번째 방법뿐만 아니라 사용 방법에 대한 자세한 내용은 다음을 참조하십시오.

http://msdn.microsoft.com/en-us/library/ms178139.aspx

다른 팁

useubmitbehavior = "true"를 사용하고 양식에 메소드 = "get"을 넣을 수 있습니다. 이렇게하면 브라우저가 동작을 제출하고 텍스트 상자의 값을 쿼리 문자열에 추가합니다.

텍스트 박스 필드에서 Enter Keypress 이벤트를 잡아 일부 JavaScript를 사용하여이를 수행 할 수도 있습니다. 텍스트 상자에서 텍스트 유효성 검사를 수행하도록 이것을 확장 할 수 있습니다. (이 예제는 사용 중입니다 jQuery)

$(document).ready(function(){
    // Event Handlers to allow searching after pressing Enter key
    $("#myTextBoxID").bind("keypress", function(e){
        switch (e.keyCode){
        case (13):
            // Execute code here ...
            break;
        default:
            break;
        }
    });
});

문제를 해결하면 이전 페이지는 "default.aspx"이지만 해당 페이지에 컨트롤이 존재하지 않습니다. 마스터 페이지를 사용하기 때문에 선택해야합니다. 주인 보다는 이전 페이지.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If PreviousPage IsNot Nothing Then
      Dim txtBoxSrc As New TextBox
      txtBoxSrc = CType(Master.FindControl("searchbox"), TextBox)
      If txtBoxSrc IsNot Nothing Then
          MsgBox(txtBoxSrc.Text)
      End If
  End If
End Sub

<div class="gsSearch">
    <asp:TextBox ID="searchbox" runat="server"></asp:TextBox>
    <asp:Button ID="searchbutton" runat="server" Text="search" 
         UseSubmitBehavior="true" PostBackUrl="~/search.aspx" />
</div>

나는 당신이 왜 당신이 내 VB가 아닌 지식과 함께 그 코드에서 널리 참조를 얻을지 모르겠지만, 시도 할 수있는 약간의 수정을 시도 할 것입니다.

FindControl이 유형 컨트롤을 반환한다는 것을 알고 있습니다. 어쩌면 특정 유형으로 상자를 기다릴 수 있습니다.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If PreviousPage IsNot Nothing Then
      Dim txtBoxSrc As New Control
      txtBoxSrc = PreviousPage.FindControl("searchbox")
      If txtBoxSrc IsNot Nothing Then
          MsgBox((CType(txtBoxSrc, TextBox)).Text)
      End If
  End If
End Sub

<div class="gsSearch">
    <asp:TextBox ID="searchbox" runat="server"></asp:TextBox>
    <asp:Button ID="searchbutton" runat="server" Text="search" 
         UseSubmitBehavior="true" PostBackUrl="~/search.aspx" />
</div>

이 (VB, 죄송합니다) :

CodeBehind를 통해 텍스트 상자에서 값을 가져오고 다음과 같은 컨트롤에서 PostBackUrl을 간단히 설정하십시오.

dim textval = SourceTextBox.text
dim myparam = "George"

searchbutton.PostBackUrl = "~/search.aspx?myparam=" & myparam

버튼 클릭을 처리하는 함수에 넣을 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top