关于页面搜索的问题,在线等待

hzhalu 2008-11-21 10:38:32
我想做一个搜索功能,在第一个页面中有一个DropDownList控件,一个TextBox控件,一个Button控件。假设DropDownList控件的值为A,TextBox控件的值为B,我点击Button控件跳转到第二个页面,并且在第二个页面中用GridView控件显示 select * from [表名] where A = B 的结果。

请问这有什么好方法吗?如果实现这个功能啊,我用C#语言的,拜托各位大哥赐教啊,在线等待。
...全文
159 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzhalu 2008-11-21
  • 打赏
  • 举报
回复
我一共发过两个帖子,第一个帖子因为问题没有得到解决,所以没结贴,现在这个还没结束呢,呵呵,结束了肯定结贴的啊

jiang_jiajia10老大,我上面的SQL语句不是结构错了,我做的功能是搜索,ddl是字段名,表示客户想搜索的类型,ttb是表示想搜索的结果。比如ddl=品牌,ttb=LV,再比如ddl=款式,ttb=双肩包。
jiang_jiajia10 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 hzhalu 的回复:]
貌似还是有点问题:FROM 子句语法错误。
string ddl = Request.QueryString["ddl"];
string ttb = Request.QueryString["ttb"];
string sqlText;
sqlText = "select * from [tudi] where" + ddl + "=" + ttb;

我这样写有错吗? 哎!!请教请教!!!
[/Quote]
你这样写当然错误了

sqlText = "select * from users where 字段1='" + ddl + "' and 字段二='" + ttb + "'";


老兄建议你看看基础知识。还有就是别忘了结贴,你的结帖率:0.00% 吓人
hzhalu 2008-11-21
  • 打赏
  • 举报
回复
貌似还是有点问题:FROM 子句语法错误。
string ddl = Request.QueryString["ddl"];
string ttb = Request.QueryString["ttb"];
string sqlText;
sqlText = "select * from [tudi] where" + ddl + "=" + ttb;

我这样写有错吗? 哎!!请教请教!!!
jiang_jiajia10 2008-11-21
  • 打赏
  • 举报
回复
细节决定成败,从头到脚都要做细心的做
hzhalu 2008-11-21
  • 打赏
  • 举报
回复
是啊 ,是粗心了,哎,真不好意思 ,谢谢yfqvip还有jiang_jiajia10两位老大给我指出来。
我这个问题是简单了点,不过我学.NET没多久,还请包含啊
freexiaoyu 2008-11-21
  • 打赏
  • 举报
回复
http://www.cnblogs.com/freexiaoyu/archive/2008/05/24/1206459.html
yagebu1983 2008-11-21
  • 打赏
  • 举报
回复
很简单的东西!!
就是传参数啊!!
dengchenlu 2008-11-21
  • 打赏
  • 举报
回复
直接跳转加参数不就要了
问题太简单了吧
jiang_jiajia10 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hzhalu 的回复:]
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + Server.MapPath("~/img/halu_nw.mdb");
OleDbConnection con = new OleDbConnection(strCon);

con.Open();

OleDbCommand cmd = new OleDbCommand(sqlText, con);

GridView1.DataSource = cmd.ExecuteReader;
GridView1.DataBind;
con.Close();


还是 GridView1.Dat…
[/Quote]
LZ粗心了
GridView1.DataSource = cmd.ExecuteReader;
GridView1.DataBind;
都是方法不是属性啊要加()的
jiang_jiajia10 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jiang_jiajia10 的回复:]
引用 4 楼 hzhalu 的回复:
我自己的方法:
已经把A和B的值都传递到第二个页面,然后在第二个页面中使用选择语句
switch (A)
{
case "tudi_add":
sqlText = "select * from tudi where tudi_add =" + B;
break;
case "tudi_num":
sqlText = "select * from tudi where tudi_num =" + B;
break;

[/Quote]
修改一下
OleDbDataAdapter dbAdapter = new OleDbDataAdapter(sqlText , con);

满衣兄 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hzhalu 的回复:]
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + Server.MapPath("~/img/halu_nw.mdb");
OleDbConnection con = new OleDbConnection(strCon);

con.Open();

OleDbCommand cmd = new OleDbCommand(sqlText, con);

GridView1.DataSource = cmd.ExecuteReader;
GridView1.DataBind;
con.Close();


还是 GridView1.Dat…
[/Quote]
不好意思,我5楼好象说错了,不过通常按照我说的那个顺序好.
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataBind();
jiang_jiajia10 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hzhalu 的回复:]
我自己的方法:
已经把A和B的值都传递到第二个页面,然后在第二个页面中使用选择语句
switch (A)
{
case "tudi_add":
sqlText = "select * from tudi where tudi_add =" + B;
break;
case "tudi_num":
sqlText = "select * from tudi where tudi_num =" + B;
break;
case "tudi_use": …
[/Quote]
修改一下

switch (A)
{
case "tudi_add":
sqlText = "select * from tudi where tudi_add =" + B;
break;
case "tudi_num":
sqlText = "select * from tudi where tudi_num =" + B;
break;
case "tudi_use":
sqlText = "select * from tudi where tudi_use =" + B;
break;
default:
break;
}

string strCon = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + Server.MapPath("~/img/halu_nw.mdb");
OleDbConnection con = new OleDbConnection(strCon);
con.Open();
OleDbDataAdapter dbAdapter = new OleDbDataAdapter(sQueryString, conn);
DataSet ds = new DataSet();
dbAdapter.Fill(ds, "tudi ");
GridView1.DataSource = ds.Table[0].DefultView;
GridView1.DataBind;
conn.Close();



hzhalu 2008-11-21
  • 打赏
  • 举报
回复
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + Server.MapPath("~/img/halu_nw.mdb");
OleDbConnection con = new OleDbConnection(strCon);

con.Open();

OleDbCommand cmd = new OleDbCommand(sqlText, con);

GridView1.DataSource = cmd.ExecuteReader;
GridView1.DataBind;
con.Close();


还是 GridView1.DataSource = cmd.ExecuteReader;
GridView1.DataBind; 这两句出错,两个错误:

错误 1 无法将方法组“ExecuteReader”转换为非委托类型“object”。您是要调用方法吗?
错误 2 只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句
jiang_jiajia10 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yfqvip 的回复:]
A.aspx

C# code
private void Button1_Click(object sender, System.EventArgs e)
{
Response.Redirect("B.aspx?id="+this.DropDownList1.SelectedValue+"&content="+this.TextBox1.Text);
}



B.aspx

C# code
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
string id = Reques…
[/Quote]
这是页面传值,你也可以用seesion把他们存起来,然后到另外一个页面接受一下啊

private void Button1_Click(object sender, System.EventArgs e)
{
session[id]= this.DropDownList1.SelectedValue;
session[content]= this.TextBox1.Text;
Response.Redirect("B.aspx");
}
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
string id = Request.QueryString["id"].ToString();
string content = Request.QueryString["content"].ToString();
}
}




满衣兄 2008-11-21
  • 打赏
  • 举报
回复
OleDbCommand cmd = new OleDbCommand(sqlText, con);
con.Open();
修改为:
con.Open();
OleDbCommand cmd = new OleDbCommand(sqlText, con);

要先打开才能使用.
hzhalu 2008-11-21
  • 打赏
  • 举报
回复
我自己的方法:
已经把A和B的值都传递到第二个页面,然后在第二个页面中使用选择语句
switch (A)
{
case "tudi_add":
sqlText = "select * from tudi where tudi_add =" + B;
break;
case "tudi_num":
sqlText = "select * from tudi where tudi_num =" + B;
break;
case "tudi_use":
sqlText = "select * from tudi where tudi_use =" + B;
break;
default:
break;
}

string strCon = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + Server.MapPath("~/img/halu_nw.mdb");
OleDbConnection con = new OleDbConnection(strCon);

OleDbCommand cmd = new OleDbCommand(sqlText, con);

con.Open();

GridView1.DataSource = cmd.ExecuteReader;
GridView1.DataBind;

con.Close();

但是问题出来了,他老是报错,说我这两句错了 GridView1.DataSource = cmd.ExecuteReader; GridView1.DataBind;
我想请问究竟错在哪里啊,是不是我数据库绑定写错了?
满衣兄 2008-11-21
  • 打赏
  • 举报
回复
考虑到安全性,要过滤非法字符.
string id = Request.QueryString["id"].ToString().Replace("'","");
//可以自己写个函数过滤.
也可以通过Post方式传递参数.这里就不演示了,网上可以找到例子.
wfcfan 2008-11-21
  • 打赏
  • 举报
回复
a.aspx:
protected void btn_Click(object sender, EventArgs e)
{
string a = DropDownList1.SeleclValue;
string b = TextBox1.Text;
string up = String.Format("b.aspx?a={0}&b={1}",a,b);
Response.Redirect(up, true);
}


b.aspx

string a = "";
string b = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Request["a"]))
a = Request["a"];
if (!string.IsNullOrEmpty(Request["a"]))
b = Request["b"];
if(!IsPostBack)
{
string sql = "select * from [表名]";
if( a != "" && b != "")
{
sql += string.Format("where {0} = {1}",a,b);
}
.....
}


}
满衣兄 2008-11-21
  • 打赏
  • 举报
回复
A.aspx

private void Button1_Click(object sender, System.EventArgs e)
{
Response.Redirect("B.aspx?id="+this.DropDownList1.SelectedValue+"&content="+this.TextBox1.Text);
}

B.aspx

private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
string id = Request.QueryString["id"].ToString();
string content = Request.QueryString["content"].ToString();
}
}
tianshangfei 2008-11-21
  • 打赏
  • 举报
回复
up
加载更多回复(7)

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧