3

今のところ、テキストボックスとボタンを備えた検索ページを構築しています。おそらく、後で結果をフィルタリングするためのドロップダウンです。ボタンの PostBackUrl を検索ページ (~/search.aspx) に設定しています。テキスト ボックスの値を検索ページに渡す簡単な方法はありますか?

4

6 に答える 6

5

ボタンに PostBackUrl が設定されている場合、最初のページの検索ボックス フィールドとそのページの他のフォーム フィールドは、既に検索ページにポストされています。秘訣は、search.aspx ページのコード ビハインドでそれらにアクセスすることです。

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

それが一つの方法です。search.aspx ページの上部で PreviousPageType ディレクティブを使用するなど、いくつかのショートカットもあります。

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

その使用方法と最初の方法の詳細については、次を参照してください。

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

于 2008-10-15T14:26:22.990 に答える
0

これはどうですか(vb、申し訳ありません):

コードビハインドを介してテキストボックスから値を取得し、次のようにコントロールにpostbackurlを設定するだけです。

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

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

それをボタンクリックを処理する関数に入れるだけですよね?

于 2012-05-05T22:04:59.603 に答える
0

なぜそのコードで null 参照を取得するのか、私の VB の知識がないだけではわかりませんが、試してみることができるかもしれないわずかな変更を試みます。

FindControl が Control 型を返すことはわかっています。おそらく、特定の型にボックス化するのを待つことができます。

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>
于 2008-10-15T14:58:25.313 に答える
0

useSubmitBehavior="true" を使用して、フォームに method="get" を配置できる場合があります。そうすれば、ブラウザの送信動作を使用し、テキストボックスの値をクエリ文字列に追加します

于 2008-10-15T13:51:11.690 に答える
0

また、テキスト ボックス フィールドで 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;
        }
    });
});
于 2008-10-15T14:02:54.300 に答える
0

問題を解決しました。前のページは「default.aspx」ですが、コントロールはそのページに存在しません。マスター ページを使用するため、 PreviousPageではなくMasterを選択する必要があります。

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>
于 2008-10-15T14:36:01.863 に答える