回 帖 发 新 帖 刷新版面

主题:关于搜索条

我在做一个商品搜索条,碰到了点问题,希望大家帮忙看下(DorpDownList绑定商品类别,3个TextBox分别输入关键字、商品价格的上下限)
我用一个DropDownList绑定商品类别的数据库表,代码如下:
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
    protected void Page_Load(object sender, EventArgs e)
    {
        BindToDDLProductTypeName();
    }
    protected void BindToDDLProductTypeName()
    {
        con.Open();
        string sqlstr = "select * from T_ProductType";
        SqlCommand cmd = new SqlCommand(sqlstr, con);
        SqlDataReader sdr = cmd.ExecuteReader();
        ddlProductTypeName.DataSource = sdr;
        ddlProductTypeName.DataTextField = "productTypeName";
        ddlProductTypeName.DataBind();
        sdr.Close();
        con.Close();
    }
然后我用了4个Session把输入的数据取出来,并转到搜索页面,代码如下:
protected void btnSearch_Click(object sender, EventArgs e)
    {
        Session["searchProductTypeName"] = this.ddlProductTypeName.SelectedValue.ToString(); 
        Session["searchKey"] = this.txtKey.Text;
        Session["searchLowPrice"] = this.txtLowPrice.Text;
        Session["searchHighPrice"] = this.txtHighPrice.Text;
        Response.Redirect("ProductSearch.aspx");
    }
在搜索页面里,我用定义了4个变量把这4个Session取了出来,并用Response.Write把他们显示出来,代码如下:
        con.Open();
        string searchProductTypeName = Convert.ToString(Session["searchProductTypeName"]);
        string searchKey = Convert.ToString(Session["searchKey"]);
        string searchLowPrice = Convert.ToString(Session["searchLowPrice"]);
        string searchHighPrice = Convert.ToString(Session["searchHighPrice"]);
        Response.Write(searchProductTypeName);
        Response.Write(searchKey);
        Response.Write(searchLowPrice);
        Response.Write(searchHighPrice);
这时候问题就出来了,显示的searchProductTypeName永远是第一项GSM手机,无论我在DDL里选择哪一种商品,取出的值都是他,请问该怎么解决?

回复列表 (共4个回复)

沙发

Session["searchProductTypeName"] = this.ddlProductTypeName.Items[this.ddlProductTypeName.SelectedIndex].Text; 
因为你没有设置ddl的DataValueField 只设置了DataTextField所以应该使用text属性,不能取到value值,默认listitem项的值是0,所以永远选择第一项.你也可以将其DataValueField属性设置成和text一样的,这样就可以用你的方法取到了!

板凳

你说的两种方法我都用过了,但结果还是一样,是不是和这个搜索条是用户控件有关呢?

3 楼

按说应该没有问题,也不推荐用session来传递!

4 楼

不用SESSION那怎么传递呢?

我来回复

您尚未登录,请登录后再回复。点此登录或注册