我用placeholder加载了一个dropdownlist控件,而dropdownlist的id是动态从数据库中读出然后有存放到了session[]里面.
代码如下:
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Table mytb = new Table();
        mytb.BorderWidth =1;
        string TYPE_ID = GridView1.SelectedValue.ToString();
        string[] strID=new string[5];
        string[] strTITLE=new string[5];
        string[] strk = new string[200];
        Int16 k=0;
        SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\PJS.mdf;Integrated Security=True;User Instance=True");//建立数据库连接con
        SqlCommand com1 = new SqlCommand("SELECT COUNT(*) FROM PJ_STAND WHERE parents=@ID1", con);
        com1.Parameters.Add("@ID1", TYPE_ID);
        con.Open();//打开连接
        Int16 count2 = 0;//定义二级分类的个数(即评教体系的个数)
        count2 =Convert.ToInt16(com1.ExecuteScalar());
        SqlCommand com2 = new SqlCommand("SELECT DISTINCT TITLE,ID FROM PJ_STAND WHERE PARENTS=@ID1", con);
        com2.Parameters.Add("@ID1", TYPE_ID);
        SqlDataReader DR = com2.ExecuteReader();
        Int16 i=0;
        try
        {
            while(DR.Read())
            {
                strID[i] = DR["ID"].ToString();//把二级分类的ID存入strID[]数组
                strTITLE[i] = DR["TITLE"].ToString();//把二级分类的TITLE存入数组strTITLE[]
                i++;
            }
        }
        finally
        {
            DR.Close();
        }
        for (; i > 0; i--) {
            string[] gs = new string[20];
            TableRow tr = new TableRow();
            TableCell tc = new TableCell();
            tc.Text = strTITLE[i-1];
            tc.BorderWidth =1;
            tr.Cells.Add(tc);
            mytb.Rows.Add(tr);
            SqlCommand comcount = new SqlCommand("SELECT COUNT(*) FROM PJ_STAND WHERE PARENTS=@IDCOUNT", con);
            comcount.Parameters.Add("@IDCOUNT", strID[i - 1]);
            Int16 count3 =Convert.ToInt16( comcount.ExecuteScalar());
            tc.RowSpan = (count3 + 1);
            SqlCommand com3 = new SqlCommand("SELECT DISTINCT TITLE,ID  FROM PJ_STAND WHERE PARENTS=@ID1", con);
           com3.Parameters.Clear ();
           com3.Parameters.Add("@ID1",strID[i-1]);
           SqlDataReader mydr = com3.ExecuteReader();
           Int16 j = 0;
           while (mydr.Read()) {
               
               ////////////////////////////////////////
               TableRow trr = new TableRow();
               TableCell tcr = new TableCell();
               tcr.Text = mydr["title"].ToString();
               tcr.BorderWidth = 1;
               trr.Cells.Add(tcr);
               mytb.Rows.Add(trr);
               /////////////////////////////////////////
               DropDownList ddl = new DropDownList();
               ddl.ID = mydr["ID"].ToString();
               gs[j] = ddl.ID;
               strk[k] = ddl.ID;
               k++;
               Session[k.ToString()] = ddl.ID;
               Label1.Text += Session[k.ToString()].ToString();
               //Label1.Text += Session[k.ToString()].ToString();
               j++;
               
               ddl.Items.Add(new ListItem("1"));
               ddl.Items.Add(new ListItem("2"));
               ddl.Items.Add(new ListItem("3"));
               ddl.Items.Add(new ListItem("4"));
               ddl.Items.Add(new ListItem("5"));
               ddl.Items.Add(new ListItem("6"));
               ddl.Items.Add(new ListItem("7"));
               ddl.Items.Add(new ListItem("8"));
               ddl.Items.Add(new ListItem("9"));
               ddl.Items.Add(new ListItem("10"));
  ///////////////////////////////////////////////////////////////
               TableCell tcd = new TableCell();
               tcd.BorderWidth = 1;
               trr.Cells.Add(tcd);
               string str = "";
               if (tcr.Text != str)
               {
                   tcd.Controls.Add(ddl);
               }
              
 
           }
           mydr.Close();
           PlaceHolder1.Controls.Add(mytb);
       }
       con.Close();
       Session["count"] = k;
       
        } /// <summary>
 /// //////////////////////////////////////////////////////////////
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 
    protected void Button1_Click(object sender, EventArgs e)
    {   string [] str=new string[20];
        Int16 i = 0;
        string type_id = GridView1.SelectedValue.ToString();
        //string stu_id = Session["studentID"].ToString();
        string tea_id = GridView1.SelectedRow.Cells[1].ToString();
        DateTime time = DateTime.Today;
        for (; i <Convert.ToInt16( Session["count"]); i++) {
            //DropDownList ddl = PlaceHolder1.FindControl(Session[i.ToString()].ToString()) as DropDownList;
            //Response.Write(Convert.ToInt16(Session[i.ToString()]));
            DropDownList ddl = PlaceHolder1.FindControl(Session[i.ToString()) as DropDownList;
            
                Response.Write(ddl.SelectedItem.ToString());
            
            
        }
    }
可是不能显示所选的值?why

解决方案 »

  1.   

    我用placeholder加载了一个dropdownlist控件,而dropdownlist的id是动态从数据库中读出然后有存放到了session[]里面.
    代码如下:
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Table mytb = new Table();
            mytb.BorderWidth =1;
            string TYPE_ID = GridView1.SelectedValue.ToString();
            string[] strID=new string[5];
            string[] strTITLE=new string[5];
            string[] strk = new string[200];
            Int16 k=0;
            SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\PJS.mdf;Integrated Security=True;User Instance=True");//建立数据库连接con
            SqlCommand com1 = new SqlCommand("SELECT COUNT(*) FROM PJ_STAND WHERE parents=@ID1", con);
            com1.Parameters.Add("@ID1", TYPE_ID);
            con.Open();//打开连接
            Int16 count2 = 0;//定义二级分类的个数(即评教体系的个数)
            count2 =Convert.ToInt16(com1.ExecuteScalar());
            SqlCommand com2 = new SqlCommand("SELECT DISTINCT TITLE,ID FROM PJ_STAND WHERE PARENTS=@ID1", con);
            com2.Parameters.Add("@ID1", TYPE_ID);
            SqlDataReader DR = com2.ExecuteReader();
            Int16 i=0;
            try
            {
                while(DR.Read())
                {
                    strID[i] = DR["ID"].ToString();//把二级分类的ID存入strID[]数组
                    strTITLE[i] = DR["TITLE"].ToString();//把二级分类的TITLE存入数组strTITLE[]
                    i++;
                }
            }
            finally
            {
                DR.Close();
            }
            for (; i > 0; i--) {
                string[] gs = new string[20];
                TableRow tr = new TableRow();
                TableCell tc = new TableCell();
                tc.Text = strTITLE[i-1];
                tc.BorderWidth =1;
                tr.Cells.Add(tc);
                mytb.Rows.Add(tr);
                SqlCommand comcount = new SqlCommand("SELECT COUNT(*) FROM PJ_STAND WHERE PARENTS=@IDCOUNT", con);
                comcount.Parameters.Add("@IDCOUNT", strID[i - 1]);
                Int16 count3 =Convert.ToInt16( comcount.ExecuteScalar());
                tc.RowSpan = (count3 + 1);
                SqlCommand com3 = new SqlCommand("SELECT DISTINCT TITLE,ID  FROM PJ_STAND WHERE PARENTS=@ID1", con);
               com3.Parameters.Clear ();
               com3.Parameters.Add("@ID1",strID[i-1]);
               SqlDataReader mydr = com3.ExecuteReader();
               Int16 j = 0;
               while (mydr.Read()) {
                   
                   ////////////////////////////////////////
                   TableRow trr = new TableRow();
                   TableCell tcr = new TableCell();
                   tcr.Text = mydr["title"].ToString();
                   tcr.BorderWidth = 1;
                   trr.Cells.Add(tcr);
                   mytb.Rows.Add(trr);
                   /////////////////////////////////////////
                   DropDownList ddl = new DropDownList();
                   ddl.ID = mydr["ID"].ToString();
                   gs[j] = ddl.ID;
                   strk[k] = ddl.ID;
                   k++;
                   Session[k.ToString()] = ddl.ID;
                   Label1.Text += Session[k.ToString()].ToString();
                   //Label1.Text += Session[k.ToString()].ToString();
                   j++;
                   
                   ddl.Items.Add(new ListItem("1"));
                   ddl.Items.Add(new ListItem("2"));
                   ddl.Items.Add(new ListItem("3"));
                   ddl.Items.Add(new ListItem("4"));
                   ddl.Items.Add(new ListItem("5"));
                   ddl.Items.Add(new ListItem("6"));
                   ddl.Items.Add(new ListItem("7"));
                   ddl.Items.Add(new ListItem("8"));
                   ddl.Items.Add(new ListItem("9"));
                   ddl.Items.Add(new ListItem("10"));
      ///////////////////////////////////////////////////////////////
                   TableCell tcd = new TableCell();
                   tcd.BorderWidth = 1;
                   trr.Cells.Add(tcd);
                   string str = "";
                   if (tcr.Text != str)
                   {
                       tcd.Controls.Add(ddl);
                   }
                  
     
               }
               mydr.Close();
               PlaceHolder1.Controls.Add(mytb);
           }
           con.Close();
           Session["count"] = k;
           
            } /// <summary>
     /// //////////////////////////////////////////////////////////////
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     
        protected void Button1_Click(object sender, EventArgs e)
        {   string [] str=new string[20];
            Int16 i = 0;
            string type_id = GridView1.SelectedValue.ToString();
            //string stu_id = Session["studentID"].ToString();
            string tea_id = GridView1.SelectedRow.Cells[1].ToString();
            DateTime time = DateTime.Today;
            for (; i <Convert.ToInt16( Session["count"]); i++) {
                //DropDownList ddl = PlaceHolder1.FindControl(Session[i.ToString()].ToString()) as DropDownList;
                //Response.Write(Convert.ToInt16(Session[i.ToString()]));
                DropDownList ddl = PlaceHolder1.FindControl(Session[i.ToString()) as DropDownList;
                
                    Response.Write(ddl.SelectedItem.ToString());
                
                
            }
        }
    可是不能显示所选的值?why
      

  2.   

    太长,先
    DropDownList ddl = PlaceHolder1.FindControl(Session[i.ToString()) as DropDownList;
    这里的括号不匹配