大家好,小弟求教一个问题。
我想实现这样的功能:当我在DropDownList1的下拉列表中选定某一项后,点右边的按纽“查询”,然后,存储在表gsmb中的数据即可被写入下面的几个TextBox和DropDownList控件中,但总是只能显示第一条数据的,当选择其它数据时,马上DropDownList1的选定的内容就又变成第一条记录了。请赐教。下面是按纽“查询”的代码:
private void Button4_Click(object sender, System.EventArgs e)
{
SqlConnection conn=new SqlConnection();  conn.ConnectionString=   //从配置文件中获取信息
ConfigurationSettings.AppSettings["ConnectionString"];
SqlCommand cmd=new SqlCommand();
cmd.Connection=conn;  string SQLstr="Select * from gsmb where mubiaoID=@ID";
cmd.CommandText=SQLstr;
cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.VarChar,50)); 
cmd.Parameters["@ID"].Value=DropDownList1.SelectedItem.Text;
conn.Open(); 
SqlDataReader reader;
reader=cmd.ExecuteReader();
//设置控件属性以显示信息 
while(reader.Read()) //使前进到并读取下一条记录.
{
if(reader.GetDateTime(1).ToString()!="") //注意数据类型
this.txt_qishi.Text=reader.GetDateTime(1).ToString();
if(reader.GetDateTime(2).ToString()!="") //注意数据类型
this.txt_zhongzhi.Text=reader.GetDateTime(2).ToString();
if(reader.GetString(3)!="")
this.txt_gsbida.Text=reader.GetString(3);
if(reader.GetString(4)!="")
this.txt_gstiaozhan.Text=reader.GetString(4);
this.ddl_gsbida.SelectedItem.Text=reader.GetString(5); 
this.ddl_gstiaozhan.SelectedItem.Text=reader.GetString(6); 
this.ddl_buzhou.SelectedItem.Text=reader.GetInt32(7).ToString(); //注意数据类型
}
reader.Close();
conn.Close();

}
真诚求教。谢谢!

解决方案 »

  1.   

    不绑定 DropDownList1 的代码放在if(!IsPostBack) {
        // 这里 ....
    }
      

  2.   

    绑定 DropDownList1 的代码放在if(!IsPostBack) {
    // 这里 ....
    }
      

  3.   

    你的DropDownList1数据是在哪里绑定的,如是是在Page_Load里,那是不是没有放在
    if(!Page.IsPostBack)
    {
    }
    里,另外DropDownList1的AutoPostBack属性是否被设为True了又或者你是在DropDownList1_SelectedIndexChanged事件里绑定的数据
      

  4.   

    我把代码放在了If(!ispostBack)
    {}
    里,不行呀,又设置AutoPostBack属性为True,但还是不行呀?请问是不是跟下面这个问题相关。下面是我的初始页面载入代码:
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    SqlConnection conn=new SqlConnection();
    conn.ConnectionString=
    ConfigurationSettings.AppSettings["ConnectionString"];
    conn.Open();
    SqlCommand cmd= new SqlCommand();
    cmd.Connection=conn;
    cmd.CommandType=CommandType.Text;
    cmd.CommandText="select mubiaoID from gsmb"; //该句必不可少,否则会显示"CommandText未初始化"的错误.
    SqlDataReader myDataReader;
    myDataReader=cmd.ExecuteReader();//调用cmd对象的ExecuteReader()方法生成 myDataReader

    //下面的代码用于将表gsmb中主键mubiaoID的值加入到下拉菜单DropDownList1的列表中.
    this.DropDownList1.Items.Clear();  
    while (myDataReader.Read())

    this.DropDownList1.Items.Add(myDataReader.GetString(0));
    }
    myDataReader.Close();

    }
    我除了这些代码之外再没有关于DropDownList1控件的任何代码,Item属性也仅设置了一个“请选择”,我是不是没有绑定数据?有必要吗?怎样绑定(右边属性拦)?谢谢。
      

  5.   

    我把代码放在了If(!ispostBack)
    {}
    ----------------------------------
    在哪里,没看到我是不是没有绑定数据?有必要吗?怎样绑定(右边属性拦)?
    -------------------------
    -_-#...
    private void Page_Load(object sender, System.EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            // 在此处放置用户代码以初始化页面
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString =
                ConfigurationSettings.AppSettings["ConnectionString"];
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "select mubiaoID from gsmb"; //该句必不可少,否则会显示"CommandText未初始化"的错误.
            SqlDataReader myDataReader;
            myDataReader = cmd.ExecuteReader();//调用cmd对象的ExecuteReader()方法生成 myDataReader        //下面的代码用于将表gsmb中主键mubiaoID的值加入到下拉菜单DropDownList1的列表中.
            this.DropDownList1.Items.Clear();
            while (myDataReader.Read())
            {
                this.DropDownList1.Items.Add(myDataReader.GetString(0));
            }
            myDataReader.Close();    }
    }
      

  6.   

    哦,终于好了。我将与数据绑定的部分的代码放在了if (!Page.IsPostBack){}之内,而“选择”按纽的单击事件代码却未放在if (!Page.IsPostBack){}之内,而且,设置AutoPostBack属性为True。谢谢各位!尤其要谢谢lxcnn(过客)!