2010-07-18 69 views
4

有人请告诉我如何以更好更优雅的方式重写下面的方法吗?C#数组方法帮助

// in class------------------ 

    public static void RefreshAllDropdownlists(DropDownList ddlRemoveUsersFromRole, DropDownList ddlAddUsersToRole, DropDownList ddlAddAllUsersToRole, DropDownList ddlRemoveAllUsersFromRole, DropDownList ddlDeleteAllUsersFromRole) 
    { 
     ddlRemoveUsersFromRole.ClearSelection(); 
     ddlAddUsersToRole.ClearSelection(); 
     ddlAddAllUsersToRole.ClearSelection(); 
     ddlRemoveAllUsersFromRole.ClearSelection(); 
     ddlDeleteAllUsersFromRole.ClearSelection(); 
    } 

// in codebehind------------------ 

UserGvUtil.RefreshAllDropdownlists(ddlRemoveUsersFromRole, ddlAddUsersToRole, ddlAddAllUsersToRole, ddlRemoveAllUsersFromRole, ddlDeleteAllUsersFromRole); 

谢谢!

+1

对我来说看起来不错。通过重写代码你会获得什么?它做你想要的。 – 2010-07-18 23:03:49

+1

@Alastair Pitts,使用该代码,每次他想要刷新另一个DDL时,方法都必须修改... – 2010-07-18 23:18:22

回答

7

使用params参数修改通过的DropDownList秒的数组:

public static void RefreshAllDropdownlists(params DropDownList[] dropDownLists) 
{ 
    foreach (DropDownList ddl in dropDownLists) 
    { 
     ddl.ClearSelection(); 
    } 
} 

用法与您目前的方法相同

+0

太棒了,谢谢!这正是我的目标,但无法弄清楚语法。 – 2010-07-18 23:19:11

1

喜欢的东西

public static void RefreshAllDropdownlists(params DropDownList[] dropDownLists) 
{ 
    if (dropDownLists != null) 
     foreach (var ddl in dropDownLists) 
      ddl.ClearSelection(); 
} 

1

你可以通过DropDownList的对象列表的功能,那么你可以做:

public static void RefreshAllDropdownlists(List<DropDownList> lists) 
{ 
    foreach(DropDownList dropDown in lists) 
    { 
    dropDown.ClearSelection(); 
    } 
} 
2
var listsToRefresh = new List<DropDownList> 
       { 
        ddlRemoveUsersFromRole, 
        ddlAddUsersToRole, 
        ddlAddAllUsersToRole, 
        ddlRemoveAllUsersFromRole, 
        ddlDeleteAllUsersFromRole 
       }; 
listsToRefresh.ForEach(l=>l.ClearSelection()); 

There有很多方法可以做到这一点,我更喜欢这一个。如果你所做的只是对每一行执行ClearSelection(),那么就不需要为那一行代码创建一个方法。然而,如果你想在每个DropDownlist上做更多的工作,那么我认为使用扩展方法会保持优雅。

public static class DropDownListExtensions 
    { 
     public static void Reset(this DropDownList dropDownList) 
     { 
      dropDownList.ClearSelection(); 
      //... do more stuff 

     } 
    } 

listsToRefresh.ForEach(l=>l.Reset());