如何重用表的每一行的下拉列表而不是重建它

时间:2010-04-30 21:49:12

标签: c# asp.net

我有一个表,每行使用相同的下拉列表。我认为我可以创建一个下拉列表然后在每个新行中重复使用它,但除非我创建“新”下拉列表,否则该表最后只有一行。我接近这一切都错了吗?

为了提高效率,有没有办法构建列表一次,然后通过创建它的另一个实例来重用它?我试图避免无数次重建那份名单。

由于

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
}

2 个答案:

答案 0 :(得分:0)

您是否可以将表格转换为asp:GridView

否则,您可以通过SqlDataSourceObjectDataSource加载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));

}

希望这会有所帮助......

取值