Asp.net使用Dropdown创建行并填充它

时间:2016-01-13 21:00:06

标签: c# asp.net .net

所以我正在创建一个asp.net项目并遇到了一个我无法解决的问题。

我有一个网格视图,其中包含下拉菜单。我试图让它,以便当页面加载它运行一个SQL查询并获得结果(标题)。然后它为每个结果创建一个新的网格行,然后放入下拉框,然后选择下拉列表中的项目。

例如 -

SQL查询从oci_project中选择标题,其中id =' 42'这将导致11。

我希望它创建11行。每个下拉列表中都有一个下拉列表,然后每个下拉列表中都有一个标题。

所以

- DD - (Bobs Burgers) --DD2 - (Bobs Meats) 等

我目前正在根据结果创建下拉菜单,但我无法让它们填充。

我的代码在下面

 protected void BindDepartments(params ListControl[] controls)
    {

        SqlConnection sqlCon = new SqlConnection(WebConfigurationManager.ConnectionStrings["TimeClock"].ConnectionString);
        try
        {
            DataTable dt = new DataTable();
            using (sqlCon)
            {
                using (SqlCommand cmd = new SqlCommand("select title from oci_project where client_id='42'", sqlCon))
                {
                    cmd.CommandType = CommandType.Text;
                    sqlCon.Open();
                    using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
                    {

                        adp.Fill(dt);

                        foreach (DataRow projectdata in dt.Rows)
                        {
                            addrecordset();
                        }
                        if (dt.Rows.Count > 0)
                        {

                            foreach (ListControl ctrl in controls)
                            {
                                ctrl.Items.Add("test");
                                foreach (DataRow dtRow in dt.Rows)
                                {
                                    //

                                    ctrl.Items.Add(new ListItem(dtRow["title"].ToString()));


                                }
                                if (ctrl.Items.Count > 0)
                                {
                                    //Insert "-select-" at the first position in dropdownlist
                                    ctrl.Items.Insert(0, new ListItem("-Select-", "0"));
                                }
                                else
                                {
                                    //Insert "-No data-" at the first position in dropdownlist
                                    ctrl.Items.Insert(0, new ListItem("-No Data-", "0"));
                                }
                            }
                        }
                    }
                    sqlCon.Close();
                }
            }
        }
        catch (Exception ex)
        {
            Response.Write("Error:" + ex.Message.ToString());
        }
    }


protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DropDownList ddl = (DropDownList)e.Row.FindControl("ProjectDDL");
            SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["TimeClock"].ConnectionString);
            SqlCommand cmd = new SqlCommand("SELECT title FROM oci_project where client_id ='42'", conn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            foreach (DataRow dr in dt.Rows)
            {

                ddl.Items.Add(dr["title"].ToString());
                ddl.SelectedValue = dr["title"].ToString();


            }

        }

    }

2 个答案:

答案 0 :(得分:0)

你需要这样的东西

foreach (GridViewRow row in GridView.Rows)
{
    ctrl.Items.Add(new ListItem(row.Cells[0].Text)); 
}

你可以加载ddl代替我有字符串someStrValue

的地方

答案 1 :(得分:0)

我建议将LINQ用于访问您的数据源,将集合存储到List中,同时将Javascript框架合并到您的应用程序中(即jQuery)。然后,您可以枚举集合并动态创建包含行和列的JQuery菜单,即UL和LI

为您节省大量时间以及性能成本和可维护性。