求教
 protected void btnSub_Click(object sender, EventArgs e)
    {
        string s = ddlchkList.SelectedValue;//获取选中的值
        GetInfo(s);//获取信息的方法
        palshow.Visible = true;//显示
    }具体就是选取一个下拉列表的选项后,单击按钮 显示一个PANLE获取相关的信息但是这样写代码获取的都是下拉列表的第一个选项相关的信息 无论选什么 点击按钮以后都是第一个选项的相关信息。如何才能修正这个问题。

解决方案 »

  1.   

    ddlchkList数据源绑定写在Page_load中了?如果是,写在
    if(!IsPostBack)
    中了么?
      

  2.   

    ddlchkList.Items[ddlchkList.SelectedIndex].Value;
    你这样写就可以获取到了
      

  3.   

    问题处在你没贴代码的GetInfo中。
      

  4.   

    如果是winform 直接用SelectedText就可以
      

  5.   

    如果不行,那肯定是你的GetInfo(s);方法有问题了,你检查下你这里面的方法,我那样取是肯定对的
      

  6.   

        void GetInfo(string s)
        {
            try
            {
                SqlConnection sqlcon = new SqlConnection(ConfigurationManager.AppSettings["jccon"].ToString());
                string sql = "select * from [JX_Info] where [RecID]=" + s;
                sqlcon.Open();
                SqlCommand sqlcom = new SqlCommand(sql, sqlcon);
                SqlDataReader dr = sqlcom.ExecuteReader();
                if (dr.Read())
                {
                    string away = dr["away"].ToString();
                    string name = dr["Name"].ToString();
                    txtName.Text = name;
                    txtAway.Text = away;
                }
                sqlcon.Close();
                sqlcon.Dispose();
            }
            catch (Exception) { }
      

  7.   

    GetInfo 就是查询数据库。 取值赋值的操作
      

  8.   

    断点调试..在GetInfo中加断点
    看看每次传入GetInfo(s)中的s为多少?如果总是第一项,那么就是DropDownList的问题了
      

  9.   

    如果ddl改为刚才我写的我就肯定是可以取对了值
      

  10.   


    确实GetInfo(s)中的S确实总是第一项。
      

  11.   

    ddlchkList.Items[ddlchkList.SelectedIndex].Value;
      

  12.   

    那就是你取ddl的语句问题咯,你改为:string s=ddlchkList.Items[ddlchkList.SelectedIndex].Value;就可以解决了
      

  13.   

    如果你是CodeBind的话就要重新生成一下,再到页面刷新下就可以了,如果是CodeFile的话就保存一下可以了
      

  14.   

        void BindDDL()
        {
            SqlConnection sqlcon = new SqlConnection(ConfigurationManager.AppSettings["jccon"].ToString());
            string sql = "select * from [JX_Info] where [chkflag]=0 and [isopened]=0";
            sqlcon.Open();
            SqlDataAdapter sqladp = new SqlDataAdapter(sql, sqlcon);
            DataSet ds = new DataSet();
            sqladp.Fill(ds,"JX_Info");
            ddlchkList.DataSource = ds;
            ddlchkList.DataValueField = "RecID";
            ddlchkList.DataTextField = "RecName";
            ddlchkList.DataBind();
        }下拉绑定的代码然后就是Page_Load事件里面
        protected void Page_Load(object sender, EventArgs e)
        {
            BindDDL();
        }
      

  15.   

    protected void btnSub_Click(object sender, EventArgs e)
      {
      string s = ddlchkList.SelectedValue;//获取选中的值
      GetInfo(s);//获取信息的方法
      palshow.Visible = true;//显示
      }楼主你先在页面第一次加载的时候绑定DropDownList,看下你的DropDownList是不是在(!ispoastback)
    {
     。。//绑定你的下列列表
    }
      

  16.   

     protected void Page_Load(object sender, EventArgs e)
        {
            BindDDL();
        }
      不要这样子 放在这里面就OK了  protected void Page_Load(object sender, EventArgs e)
        {
    if(!ispostback)
    {
            BindDDL();
    }
        }
      

  17.   

    if(!IsPostBack)
    {
    BindDDL();
    }
    原来是你的Page_Lode代码有问题,你还不清楚按钮事件的执行先后次序,你这样改就搞定了
      

  18.   

       protected void Page_Load(object sender, EventArgs e)
        {
            BindDDL();
        }   void BindDDL()
        {
            SqlConnection sqlcon = new SqlConnection(ConfigurationManager.AppSettings["jccon"].ToString());
            string sql = "select * from [JX_Info] where [chkflag]=0 and [isopened]=0";
            sqlcon.Open();
            SqlDataAdapter sqladp = new SqlDataAdapter(sql, sqlcon);
            DataSet ds = new DataSet();
            sqladp.Fill(ds,"JX_Info");
            ddlchkList.DataSource = ds;
            ddlchkList.DataValueField = "RecID";
            ddlchkList.DataTextField = "RecName";
            ddlchkList.DataBind();
        }
    protected void btnSub_Click(object sender, EventArgs e)
      {
      string s = ddlchkList.SelectedValue;//获取选中的值
      GetInfo(s);//获取信息的方法
      palshow.Visible = true;//显示
      } void GetInfo(string s)
        {
            try
            {
                SqlConnection sqlcon = new SqlConnection(ConfigurationManager.AppSettings["jccon"].ToString());
                string sql = "select * from [JX_Info] where [RecID]=" + s;
                sqlcon.Open();
                SqlCommand sqlcom = new SqlCommand(sql, sqlcon);
                SqlDataReader dr = sqlcom.ExecuteReader();
                if (dr.Read())
                {
                    string away = dr["away"].ToString();
                    string name = dr["Name"].ToString();
                    txtName.Text = name;
                    txtAway.Text = away;
                }
                sqlcon.Close();
                sqlcon.Dispose();
            }
            catch (Exception) { }代码就上面那一点。
    这是原本的代码 没有别的东西了。页面就是几个控件。
      

  19.   

    你的按钮点击触发的事件是这样执行的,当你点击按钮时,先执行page_load事件再执行你的按钮事件的,所以你每次选择下拉点击按钮只能得到每一个值咯,加了if(!IsPostBack)后,你第一次初始化就得到了下拉,但当你点击按钮回发事件后,也是先执行page_load事件,但不会重新绑定你的下拉,这样你应该是得到正确的值才对,如果你得不到值,我就觉得你的前台页面是不是没有缓存而导致此问题咯,如果是通常情况下是可以的了
      

  20.   

    if (!this.Page.IsPostBack)
    {}
      

  21.   

    多谢多谢。 问题解决了。 特别感谢lwmhy.  谢谢。