2010-07-18 6 views
4

더 나은 방법으로 아래 메서드를 다시 작성하는 방법을 보여줄 수 있습니까?C# Array 메서드 도움말

// 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

나에게 잘 어울립니다. 코드를 다시 작성하면 무엇을 얻을 수 있습니까? 그것은 당신이 원하는 것을 해줍니다. –

+1

@Alastair Pitts, 그 코드로, 다른 DDL을 새로 고침 할 때마다 메소드를 수정해야합니다 ... –

답변

7

사용에게 params 매개 변수 수정을 DropDownList의 배열을 통과 :

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

사용이 현재 사용중인 것과 같습니다.

+0

굉장합니다, 고마워요! 이것은 내가 목표로 삼은 것이지만 구문을 이해할 수는 없습니다. –

1

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

같은 뭔가?

당신은 함수에 DropDownList로 개체의 목록을 전달할 수
1

은, 당신은 할 수 :

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()); 

이것을하는 많은 방법이 있습니다. 나는 이것을 선호합니다. 모든 작업에서 ClearSelection()을 수행하는 경우 해당 한 줄의 코드에 대한 메서드를 만들 필요가 없습니다. 그러나 각 DropDownlist에 대해 더 많은 작업을하고 싶다면 확장 메서드를 사용하면 우아하게 유지할 수 있다고 생각합니다.

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

     } 
    } 

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