首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

跨页面查询有关问题求教

2013-07-11 
跨页面查询问题求教我想做这样一个效果,a页面是查询页,b页面有一个gridview,b页面能根据a页面的查询条件显

跨页面查询问题求教
我想做这样一个效果,a页面是查询页,b页面有一个gridview,b页面能根据a页面的查询条件显示出相应的数据。查询页中有三种条件(书名、作者、ISBN),前面两个已经成功实现,但是ISBN这一项,即使我输入的是数据库中已存在的ISBN号,也无法查询到相应的书。附上代码,希望大家能帮忙看下问题出在哪里


protected void Button1_Click(object sender, EventArgs e)
    {
        string strsql = "";
        strsql = "SELECT * FROM Book WHERE 1=1";
        if (this.TextBox1.Text != "")
        {
            strsql += " AND bookName like'%" + this.TextBox1.Text.ToString() + "%' ";
        }
        if (this.TextBox2.Text != "")
        {
            strsql += " AND author like'%" + this.TextBox2.Text.ToString() + "%' ";
        }
        if (this.TextBox3.Text != "")
        {
            strsql += " AND ISBN like'%" + this.TextBox3.Text.ToString() + "%' ";
        }
        Response.Redirect("Default3.aspx?StrWhere=" + strsql);
    }



protected void Page_Load(object sender, EventArgs e)
    {
        string StrWhere = Request["StrWhere"].ToString();
        SqlDataSource1.SelectCommand = StrWhere;
        GridView1.DataBind();
    }



[解决办法]
还,你到底了不了解什么叫get传值,什么叫post传值。

Default3.aspx?StrWhere=" + strsql
你这样传值,是因为url过长,肯定获取不了完整的值。


而且你这样传sql,很容易给别人攻击,到时你哭都来不及。

建议你,书名、作者、ISBN分别get方式传到b页面,然后在b页面构建你的sql语句!

记得分全部给我。
[解决办法]
像你这样 直接把操作语句暴露在地址栏还是第一次见

即便是可行,地址栏传值也是有长度限制的

你可以传递参数过去,而不是查询语句

或者在本页面直接查出数据,利用sesseion传递
[解决办法]
直接把三个参数穿过去,之后在B页面查询绑定
或者把查询结果保存在session
之后直接转型绑定

热点排行