我把搜索功能做成一个用户空间(包括多个TextBox、一个Button),我把这个用户控件和一个DataGrid控件放在同一个页面中,想实现当点击用户控件里的Button时,把搜索的结果显示在DataGrid中。请问我该怎么做?
(如果不用用户控件而将这些Text和Button直接和DataGrid放在同一个页面上,或通过地址栏传值实现搜索功能的话,我能做到。)
(如果不用用户控件而将这些Text和Button直接和DataGrid放在同一个页面上,或通过地址栏传值实现搜索功能的话,我能做到。)
有没有源码来参考一下哦?
Response.Redirect("Search.aspx?Title=" + Server.UrlEncode(SearchTitle.Text));
在放置该datagrid的页面里写
Title1 = Server.UrlDecode(Request.QueryString["Title"]);
根据该查询值从数据库中取符合的数据绑定到datagrid显示就可以了。
private string showPageURL;
public string ShowPageURL //显示查询结果属性
{
get{ return showPageURL;}
set{ showPageURL = value; }
}
然后在Button按钮on_Click事件中:
Response.Redirect(showPageURL + "?Search=" + this.TextBox.Text);如果要在一个新的页面显示查询的结果,指定ShowPageURL属性值为新的页面:
<uc1:SearchControl id="SearchControl1" runat="server" ShowPageURL="WebForm1.aspx"></uc1:SearchControl>
如果在本页显示查询结果:
if(Request.QueryString["search"]!=null)
{
不为空所以显示查询内容
}
我仍然不希望通过地址栏传值,能实现么?加油!加油!!!
在aspx中获取这个DataTable,再将它传给DataGrid,不就OK了吗?用户控件:
<%@ Control Language="c#" %>
//...html...包括多个TextBox、一个Button....
<script runat="server">
public DataTable mydata; //这里定义了一个参数
public void Page_Load()
{ ...检索代码,并将结果赋值给mydata... }
</script>
在aspx中:
<%@ Register TagPrefix="UserControl" TagName="Seach" Src="XXX.ascx" %>
<html>
<body>
<form runat="server" method="post">
<UserControl:Seach id="myseach" runat="Server" /> //你的控件
<asp:DataGrid id="viewdata" runat="server" /> //DataGrid控件
</form>
</body>
<script Language="c#" runat="Server">
public void Page_Load()
{
DataTable thisdata = myseach.mydata; //取得用户控件的检索结果
........绑定thisdata到DataGrid控件.........
}
</script>
</html>页面可能需要刷新才能看到结果,可以使用提交服务器端,或使用按钮...