2012-09-10 2 views
0

현재 GridView 개체를 매개 변수로 받아들이고 계산을 수행하기 위해 GridView 개체 내의 값을 액세스하는 몇 가지 방법이 있습니다.- GridView 개체를 매개 변수로 전달하는 것이 좋습니다.

제 질문은 이것이 좋은 연습인지 여부입니다. 결과 디스플레이를 변경해야 할 때 (예 : GridView은 원래 10 개 셀보다 9 개의 셀 결과가 표시됨),이를 사용하는 모든 메소드를 변경하거나 ArrayIndexOutOfBound 오류가 발생할 위험이 있습니다.

public static string checkCount(GridView gr) 
{ 
    //need to change the cell index if the sql to get the gridview is changed 
    string name = gr.Rows[b].Cells[9].Text.ToUpper(); 
} 

이 어떤 생각?

감사

편집
는 더 나은 개체 자체가 데이터 행의 표현 개체의 목록에 SQL 결과를지도를 넣어하는 방법을하는 것입니다. 이 방법은 내가 열을 제거하더라도, 나는 단지 매핑 방법 자체를 다룰 필요가 있으며 다른 것들은 규범에 따라 기능해야한다.

예 :

public class Profile{ 
    string name {get;set;} 
    string icNo {get;set;} 
} 

public list getProfileList(){ 
    //run some query here and loop the result 
    //while looping 
    profile = new Profile(name=/*the name result*/, icNo=/*icNo from result*/); 
    //return the list 
} 

페이지로드

List profiles = getProfileList(); 
gv.DataSource = profiles; 
gv.DataBind(); 


public string calculationMethod(List profiles){ 
    //when in need of the result, just get the object from profiles and process 
} 
+0

를 당신이 코드를 중복되지 않도록 할 수 있습니다 경우 ** ** 것이 좋습니다. 적절한 방법을, 좋은 계층 (UI 계층에 머 무르십시오)에 구축하고 프랑켄슈타인 방법을 피할 수있는 복잡성을 줄이는 것이 문제입니다. –

+0

의미에서 중복, gridview에서 값 이름을 가져올 필요가있을 때마다 색인 번호를 포함하는 Text 메서드를 사용해야하고, SQL을 변경할 때 모든 것을 변경해야합니다. 그 선이 몇 개의 클래스 주위에 흩어져 있다고 상상해보십시오). 따라서 유지 보수 문제로 이어질 수 있으므로 의견을 묻습니다. 대부분의 대답은 – ipohfly

답변

1

파라미터로서 오브젝트와의 GridView 객체 내의 값은 어떻게 어디서 계산을

을 수행하도록 액세스되고 가치는 오는거야? 데이터/비즈니스 객체 또는이 특정 계산만을 담당하는 도우미 객체에서 직접 계산을 수행하는 것이 더 나은 방법이라고 생각합니다. 그렇다면 BO 나 다른 것 대신이 도우미 객체로부터 결과 뷰를 동적으로 생성하는 다른 함수를 가질 수 있습니다.

는 계산을위한 세포와 ​​직접하지 작업을해야하는 이유 원래

이 정확히 9 개 세포보다는 10 개 세포의 결과가됩니다. 그리고 정말로해야한다면 계산을위한 지표를 찾는 또 다른 방법을 찾아야합니다. 그것들은 실제 결과 객체에 의존 할 수 있습니다. (귀하의 값은 특정 데이터 유형에도 존재할 수 있으며, 시각화 및 사용자 입력을 위해서만 문자열 또는 일부와 같은 것으로 변환되어야합니다.)

이 문제를 해결하려면 generell에서 사용자의 요구 사항을 명확하게 분석해야합니다.

는 또한 응용 프로그램에 대한 n 계층 모델을 사용하여 생각할 수 이

+0

+1입니다. 이것은 n 계층의 문제가 아니며, 고전적인 "도우미 방법"문제입니다. 도움이되는 방법이 도움이됩니다. – slugster

0

,444 변환 : 같은 몇 가지 유지로 : <asp:TemplateField> :

<asp:TemplateField HeaderText="name" SortExpression="DateCreated"> 
     <ItemTemplate> 
      <asp:label id="LbMyName" text="" runat="server"> 
     </ItemTemplate> 
</asp:TemplateField> 

지금 당신은 뒤에 코드에서 호출 할 수 있습니다

Label lb = GridView1.Rows[i].FindControl("LbMyName"); 
관련 문제