我有一个表,每行使用相同的下拉列表。我认为我可以创建一个下拉列表然后在每个新行中重复使用它,但除非我创建“新”下拉列表,否则该表最后只有一行。我接近这一切都错了吗?
为了提高效率,有没有办法构建列表一次,然后通过创建它的另一个实例来重用它?我试图避免无数次重建那份名单。
由于
private void UserRoles()
{
Table table = MakeTable();
Ewo.sqlDataStore.Administrator sql = new Ewo.sqlDataStore.Administrator();
DataSet dataset =sql.SiteUserRoleList();
DropDownList sel = RoleList(dataset.Tables[0]);
if(tools.validDataSet(dataset))
{
if (dataset.Tables.Count > 1)//existing roles are #2, show the roles the user is part of
{
foreach (DataRow dRow in dataset.Tables[1].Rows)
{
table.Rows.Add(CreateRoleRow(Convert.ToString(dRow["SitePageGroupName"]), sel));//add a row with data
}
}
table.Rows.Add(CreateRoleRow(sel));//add a blank row on the bottom
}
AdminSiteUerRoles.Controls.Add(table);//add it all to the page
}
答案 0 :(得分:0)
您是否可以将表格转换为asp:GridView
?
否则,您可以通过SqlDataSource
或ObjectDataSource
加载DropDownLists。
创建new DropDownList()
并根据需要添加到表格列中。
为每个新的DropDownList指定DataSourceID
作为数据源。
答案 1 :(得分:0)
您应该为每一行创建新的DropDown实例。
以下是一个例子:
foreach (DataRow dRow in dataset.Tables[1].Rows){
DropDownList sel = RoleList(dataset.Tables[0]);
table.Rows.Add(CreateRoleRow(Convert.ToString(dRow["SitePageGroupName"]), sel));
}
希望这会有所帮助......
取值