0

Site.Masterから別のウィンドウへの変数の転送に関して少し問題があります。目的は、asp.netWebアプリケーション全体から検索機能にアクセスできるようにすることです...

Site.Masterから関連するコード:

<div class="search">
        <asp:Label ID="LandID" runat="server" Text="LandID"/>
        &nbsp;<asp:TextBox ID="txtSearch" runat="server" />
        &nbsp;<asp:Label ID="CarBrand" runat="server" Text="CarBrand" />
        &nbsp;<asp:TextBox ID="txtSearch2" runat="server" />
        &nbsp;<asp:Label ID="Model" runat="server" Text="Model"/>
        &nbsp;<asp:TextBox ID="txtSearch3" runat="server" />
        &nbsp;<asp:Button ID="cmdSearch" runat="server" Text="Search" Style="width: 100px" OnClick="cmdSearch_Click" />
</div>

Site.Master.Csからのコード:

public static string Text { get; set; }
public static string Text2 { get; set; }
public static string Text3 { get; set; }
protected void Page_Load(object sender, EventArgs e)
{

}
protected void cmdSearch_Click(object sender, EventArgs e)
{
    Text = txtSearch.Text;
    Text2 = txtSearch2.Text;
    Text3 = txtSearch3.Text;
    Response.Redirect("search.aspx");
}

search.aspxからのコード:

   <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
    OnSelectedIndexChanged="GridView1_SelectedIndexChanged" DataKeyNames="ID">
    <Columns>
        <asp:CommandField ShowSelectButton="True" />
        <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" InsertVisible="False"
            ReadOnly="True" />
        <asp:BoundField DataField="LandID" HeaderText="LandID" SortExpression="LandID" />
        <asp:BoundField DataField="Bilmaerk" HeaderText="Bilmaerk" SortExpression="Bilmaerk" />
        <asp:BoundField DataField="Model" HeaderText="Model" SortExpression="Model" />
        <asp:BoundField DataField="Variant" HeaderText="Variant" SortExpression="Variant" />
        <asp:BoundField DataField="StartYear" HeaderText="StartYear" SortExpression="StartYear" />
        <asp:BoundField DataField="SlutYear" HeaderText="SlutYear" SortExpression="SlutYear" />
        <asp:BoundField DataField="Volumen" HeaderText="Volumen" SortExpression="Volumen" />
        <asp:BoundField DataField="MaxDrej" HeaderText="MaxDrej" SortExpression="MaxDrej" />
        <asp:BoundField DataField="AntalCylindre" HeaderText="AntalCylindre" SortExpression="AntalCylindre" />
        <asp:BoundField DataField="TopHast" HeaderText="TopHast" SortExpression="TopHast" />
        <asp:BoundField DataField="Acceleration" HeaderText="Acceleration" SortExpression="Acceleration" />
        <asp:BoundField DataField="Beskrivelse" HeaderText="Beskrivelse" SortExpression="Beskrivelse" />
        <asp:BoundField DataField="Effekt" HeaderText="Effekt" SortExpression="Effekt" />
        <asp:BoundField DataField="Picture" HeaderText="Picture" SortExpression="Picture" />
    </Columns>
</asp:GridView>
<selectparameters>
<asp:ControlParameter ControlID="<%=Text1 %>"></asp:ControlParameter>
<asp:ControlParameter ControlID="<%=Text2 %>"></asp:ControlParameter>
<asp:ControlParameter ControlID="<%=Text3 %>"></asp:ControlParameter>
</selectparameters>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:CarConnectionString %>"
    SelectCommand="SELECT * FROM [Bil] WHERE (([LandID] LIKE '%' +@LandID+ '%') AND ([Bilmaerk] LIKE '%' +@Bilmaerk+ '%') AND ([Model] LIKE '%' +@Model+ '%'))">
    <SelectParameters>
        <asp:ControlParameter ControlID="Text1" Name="LandID" PropertyName="Text" Type="String"
            DefaultValue="%" />
        <asp:ControlParameter ControlID="Text2" Name="Bilmaerk" PropertyName="Text" Type="String"
            DefaultValue="%" />
        <asp:ControlParameter ControlID="Text3" Name="Model" PropertyName="Text" Type="String"
            DefaultValue="%" />
    </SelectParameters>
</asp:SqlDataSource>

search.aspx.csからの関連コード:

   public partial class search : System.Web.UI.Page
   {
protected string Text1 { get; set; }
protected string Text2 { get; set; }
protected string Text3 { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
    Text1 = SiteMaster.Text;
    Text2 = SiteMaster.Text2;
    Text3 = SiteMaster.Text3;
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    Constructor.SelectedCar = GridView1.SelectedRow.Cells[1].Text;
    Response.Redirect("Selected.aspx");
}
}
4

3 に答える 3

0

あるページから別のページにデータを転送するためにセッションを使用しないのはなぜですか..?? その非常に単純な、

//this is how you will create the Session on master page 
{
   Session["text"] = txtearch.Text;
   Session["Text2"] = txtSearch2.Text;
   Session["Text3"] = txtSearch3.Text;
}

on another page just use it like
{
   string a = Session["text"].ToString();
   string b = Session["text2"].ToString();
   string c = Session["text3"].ToString();
}
于 2012-10-23T11:40:58.323 に答える
0

ページのライフサイクルに基づいたマスターのページ読み込みまたはページ事前レンダリングでは、最初に、さまざまな検索フィールドのテキストボックスの値をそれぞれセッション変数に格納します。

次に、検索ボタンをクリックしてこれらの変数にアクセスし、データベースに移動して関連フィールドを検索するなど、基本的な手順をさらに進めることができます。

これらのセッション変数を使用することにより、値を変更しない限り、任意のページのどこからでもアクセスできます。

   public void search(object sender ,EventArgs e)
    {
        string Search = session["search"].toString();
        Search =  Search + "%";
        SqlDataSource1.SelectParameters.Clear();
        SqlDataSource1.SelectParameters.Add("search", Search);
            Search = "%" + Search;//for user name ,user email,languages made the search criteria as anywhere in the word for others it is starting letter
            SqlDataSource1.SelectParameters.Clear();//again we have to clear and add since search is changed
            SqlDataSource1.SelectParameters.Add("search", Search);
            SqlDataSource1.SelectCommand = "SELECT [UserID], [UserName], [UserEmail], [UserContact], [UserAddress], [Gender], [Languages], [Status], [Passwords],[Image] FROM [Users_raghu] where [UserName] like @search";
    }

これは、ここで参照できるサンプルです。3つのセッション変数を取得してさらに先に進む必要がある場合は、検索変数を1つだけ指定しました。

これがお役に立てば幸いです:D

于 2012-10-23T11:51:36.160 に答える
0

次のコードのようなHTTPGETメソッドを使用してみてください。

あなたのSite.Master.Csで

protected void cmdSearch_Click(object sender, EventArgs e)
{
    Text = txtSearch.Text;
    Text2 = txtSearch2.Text;
    Text3 = txtSearch3.Text;
    Response.Redirect(string.Format("search.aspx?txtSearch={0}&txtSearch2={1}&txtSearch3={2}", Text, Text2, Tex3));
}

search.aspx.csで

protected void Page_Load(object sender, EventArgs e)
{
    Text1 = Request["txtSearch"];
    Text2 = Request["txtSearch2"];
    Text3 = Request["txtSearch3"];
}

また、呼び出しによってマスターページコントロールにGETパラメーターを追加することもできます。

(Master.FindControl("txtSearch") as TextBox).Text = Request["txtSearch"];
于 2012-10-23T11:55:46.913 に答える