我在主页中有一个搜索框,在asp.net项目中,我不知道两件事:
1)如何将结果传输到新页面(因为它在母版页中)
2)如何显示结果?
对于第一个问题,我尝试使用数据表的答案创建一个会话,并在页面加载功能的新页面(构建在主页面上)检查Session!= null但是它不起作用好吧,因为页面加载功能在母版页功能之前。
对于我试过的第二个问题:
users += "<div class='divusers'>";
users += "<h5>" + dt.Rows[0][0].ToString() + "</h5>";
users += "<h5>" + dt.Rows[0][1].ToString() + "</h5>";
users += "</div>";
但是有更好的方法来显示结果吗?
答案 0 :(得分:1)
您无需传输只需将搜索字符串发送到页面的结果,请尝试此操作 在搜索按钮上单击母版页
protected void SearchButton1_Click(object sender, EventArgs e)
{
Response.Redirect("~/SearchPage.aspx?searchTerm="+txtSearchter.Text);
}
在结果页面的页面加载
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
string SearchTerm = Request.QueryString["searchTerm"];
//Do database search and bind to a gridview
}
}
答案 1 :(得分:0)
在母版页上,您可以设置一个控件来显示结果。
<div class="divusers">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<h5><%# Eval("columnName") %></h5>
</ItemTemplate>
</asp:Repeater>
</div>
然后在使用Mater的页面的aspx上,使用FindControl在主页面上找到控件并将数据绑定到它。
protected void SearchButton1_Click(object sender, EventArgs e)
{
Repeater rep = this.Master.FindControl("Repeater1") as Repeater;
rep.DataSource = DataTable;
rep.DataBind();
}
答案 2 :(得分:0)
最好在Dialog(弹出窗口)中显示结果,而不是将其转移到新页面
<GridView>
<Columns>
<asp:BoundField DataField="FirstName" HeaderText="First Name" ReadOnly="True" Visible="True" />
//other Boundfields
<asp:TemplateField HeaderText="Search">
<ItemTemplate>
<asp:Button Id="Searchbtn" runat="server" Text="Search" onClick="Searchbtn_Onclick"/>
</ItemTemplate>
</asp:TemplateField>
</columns>
</GridView>
背后的代码
protected void Searchbtn_Onclick(object sender, EventArgs e)
{
//bind the gridview
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "MyFun1", "javascript:ShowDialog(" + "'Result " + "');", true);
}
然后在剧本
script type="text/javascript">
function ShowDialog() {
$("#dialog").dialog({
autoOpen: false,
hide: "puff",
show: "slide",
width: "70%",
modal: true,
close: function(event, ui) {
$("#dialog").find("form").remove();
$("#dialog").dialog('destroy');
}
});
$("#dialog").dialog("open");
}