大家好,    我需要user选择datalist中的dropdownlist的值,然后我再外面的一个button响应时间中来读取这个dropdownlist的值. 可是,现在每次读取dropdownlist值时候,都无法正确获取user选定的值,而总是获取的dropdownlist默认的第一项值.而且再button事件之后,dropdownlist归为默认的值了.
但是,如果是单独的dropdownlist而不是放在datalist中的,那就能很好的按照我的要求工作,能够正确渎职,而且再button事件后,dropdownlist值仍然是我选择的值.  请大家帮忙,任何建议和启迪性的帮助,我都非常感谢.

解决方案 »

  1.   

    顺便再问一下,绑定了数据的控件,如textbox, 当对textbox的值进行修改,这个修改能影响数据源吗,能使datasource发生修改吗?
      

  2.   

    http://blog.csdn.net/xianfajushi/archive/2008/11/30/3413317.aspx可以参考
      

  3.   

    我是要单击外面的button,而不是datalist里面的button啊.  单击外面的button,在其响应事件中来获取datalist中dropdownlist的值. 所以,你给你链接帮不了我.thanks
      

  4.   

    不太明白你的意思,如果要修改的话加句updatecommand和update按钮就可以了
      

  5.   

    我想点击一个普通button,在其响应事件中,需要用到 datalist中的dropdownlist的值
      

  6.   

    我当然知道findcontrol,但是没用啊,达不到我的目的.
    protected void Button2_Click2(object sender, EventArgs e)
        {
            int co = this.DataList2.Items.Count;
            for (int i = 0; i < co; i++)
            {
                string value = ((DropDownList)this.DataList2.Items[i].FindControl("DropDownList")).SelectedValue;
            }
        }不行啊,读出的都是0,也就是默认的值.
      

  7.   

    CheckBox chk = (CheckBox)DataList1.Items[0].FindControl("CheckBox1");
      

  8.   

    你这样贴出来就清晰了,语法错了。
    Control shousuoKJ = (Control)Master.FindControl("ContentPlaceHolder1");
            for (int Bi = 1; Bi <= 3; Bi++) 
            { Button Bton = (Button)shousuoKJ.FindControl("Button" + Bi.ToString()); if (Bton != null) { Bton.Enabled = false; } }改为你自己的控件
    for (int Bi = 1; Bi <= 3; Bi++) 
            { CheckBox chk = (CheckBox)shousuoKJ.FindControl("CheckBox" + Bi.ToString()); if (Bton != null) { Bton.Enabled = false; } }
      

  9.   

    for (int Bi = 1; Bi <= 3; Bi++) 
            { CheckBox chk = (CheckBox)DataList1.Items[0].FindControl("CheckBox" + Bi.ToString());  
      

  10.   

    楼主的程序应该没问题!!
    string value = ((DropDownList)this.DataList2.Items[i].FindControl("DropDownList")).SelectedValue; 
    唯一感到有问题的是红色的部分,名称是否对!!!
      

  11.   

    string value = ((DropDownList)this.DataList2.Items[i].FindControl("DropDownList1")).SelectedValue; 
      

  12.   

    名称是对的,我把它定义为DropDownList1了,我datalist就放了一个dropdownlist,然后在外面有个普通的button,button响应事件里面我要去获得datalist中dropdownlist的当前值.可是,没有办法获取,每次都是得到的0,也就是默认的第一个值.  而且,button点击后,dropdownlist的值就变回默认的0了,我的选择被清洗了.我 想知道,请好好看看我的帖子,然后给我帮助,谢谢.
      

  13.   

    是把dropdownlist加selectedchanged事件,然后每次选择的改变,都把内容放到数据库中?
      

  14.   


    你可以找到DropdownList,只是取道的值不对,可见跟FindControl之类的无关,而通常是你绑定DataList的时机是错误的。这在使用了asp.net2.0的数据源控件的程序中几乎根本不会发生,例如Scott Mitchell的asp.net2.0数据操作教程中就从来不会在Page_Load中出现类似    DataListBinding();这类代码。既然根本不去手动写代码去绑定数据,正常的逻辑已经由数据源控件代劳了,你不到可以删除大部分代码,而且可以保证不出这类错误。
      

  15.   

    这里给一段直接在模板里处理实现的代码
    protected void DataList4_ItemCommand(object source, DataListCommandEventArgs e)//模板里面的按钮
        {
    if (e.CommandName == "GongKai_getID")
                {
                    int Qu_ID = 0; bool GongKai = false;                CheckBox CkBox17 = (CheckBox)DataList4.Items[0].FindControl("CheckBox17");
                    if (CkBox17 != null)
                    { Qu_ID = Convert.ToInt16(e.CommandArgument.ToString()); }                LinkButton LBut4 = new LinkButton();
                    if (LBut4 != null)
                    {
                        LBut4 = (LinkButton)e.CommandSource;
                        GongKai = Convert.ToBoolean(LBut4.ToolTip.Substring(0, LBut4.ToolTip.Length - 20));
                        if (GongKai == false) { GongKai = true; } else { GongKai = false; }
                    }                DataSet myData = Socut.Data.ExecuteDataSet("UPDATE WanChen SET Gong_Kai=" + Convert.ToBoolean(GongKai) + " WHERE ZuoYe_id=" + Qu_ID + "");                if (GongKai == true)
                    { Label7.Text = strTime + "^_^[您的日记(设置[公开])成功!]"; Label7.ForeColor = System.Drawing.Color.FromName("#33CC33"); }
                    else { Label7.Text = strTime + "[^_^您的日记(取消[公开])成功!]"; }
                    DaKai_RiJi();
                }}