所以我正在创建一个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();
}
}
}
答案 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
为您节省大量时间以及性能成本和可维护性。