在SQL server(C#/ASP.Net)的Site.Master中使用多条件搜索栏/按钮时遇到问题
大家好,关于将变量从Site.Master传输到另一个窗口,我有一个小问题,目的是使搜索功能可以从整个asp.net web应用程序访问 与现场相关的代码。主代码:在SQL server(C#/ASP.Net)的Site.Master中使用多条件搜索栏/按钮时遇到问题,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,大家好,关于将变量从Site.Master传输到另一个窗口,我有一个小问题,目的是使搜索功能可以从整个asp.net web应用程序访问 与现场相关的代码。主代码: <div class="search"> <asp:Label ID="LandID" runat="server" Text="LandID"/> <asp:TextBox ID="txtSearch" runat="server" />
<div class="search">
<asp:Label ID="LandID" runat="server" Text="LandID"/>
<asp:TextBox ID="txtSearch" runat="server" />
<asp:Label ID="CarBrand" runat="server" Text="CarBrand" />
<asp:TextBox ID="txtSearch2" runat="server" />
<asp:Label ID="Model" runat="server" Text="Model"/>
<asp:TextBox ID="txtSearch3" runat="server" />
<asp:Button ID="cmdSearch" runat="server" Text="Search" Style="width: 100px" OnClick="cmdSearch_Click" />
</div>
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>
为什么不使用会话将数据从一个页面传输到另一个页面。。?? 很简单,
//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();
}
在基于页面生命周期的主页面页面加载或页面预呈现时,首先将不同搜索字段的文本框中的值分别存储到会话变量中 然后你可以在搜索按钮上访问这些变量,然后你可以继续基本的步骤,比如去数据库,搜索相关的字段等等 通过使用这些会话变量,您可以在任何页面的任何位置访问它们,直到您更改值为止
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个会话变量,然后继续
希望这有帮助:D尝试使用HTTP GET方法,如下面的代码: 在您的站点上。Master.Cs 在您的search.aspx.cs上 还可以通过调用将GET参数添加到母版页控件:
(Master.FindControl("txtSearch") as TextBox).Text = Request["txtSearch"];
嗯,我想我还没听说。。。或者只是让它从我身边过去…是的,但真正的问题是我如何从“隐藏代码”中获取变量,现在我使其易于传输。。。我如何从纯.aspx文件访问它们,以便它能够正确地生成GridView我没有理解您提出的问题。现在的问题是,您可以使用会话将变量从一个页面转移到其他页面。然后工作就完成了,你要做的是将这些变量作为参数发送到数据库,并根据你从输出中得到的结果生成网格视图。我已经更改了答案。如果你有任何疑问,你可以查看如何使用会话变量进行编码,因为Kit是最有用的,先生。。。只是删除了我以前写的所有不必要的代码。。。
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";
}
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));
}
protected void Page_Load(object sender, EventArgs e)
{
Text1 = Request["txtSearch"];
Text2 = Request["txtSearch2"];
Text3 = Request["txtSearch3"];
}
(Master.FindControl("txtSearch") as TextBox).Text = Request["txtSearch"];