2016-08-23 4 views
0

for 루프에서 길이를 정의하는 데 문제가 있습니다. SQL 데이터베이스의 테이블에있는 행을 계산하고이 숫자를 for 루프의 길이가되게하고 싶습니다. for 루프의 길이는?

루프에 대한 코드입니다 :

protected void Page_Load(object sender, EventArgs e) 
    { 

     for (int i = 0; i < A; i++) 
     { 
      System.Web.UI.HtmlControls.HtmlGenericControl createDiv = 
      new System.Web.UI.HtmlControls.HtmlGenericControl("DIV"); 
      createDiv.ID = "createDiv"; 
      this.Controls.Add(createDiv); 
     } 

    } 

그리고 이것은 내 데이터베이스 테이블의 행 수를 계산하는 코드입니다.

내 for 루프에 div를 작성하여 데이터베이스에있는 모든 배에 대한 정보를 표시하고 싶습니다.

길이 정의 방법에 대해 도움을받을 수있는 사람이 있습니까?

감사합니다.

+3

변경'A'를'내가

+1

모든 레코드에 대한 정보를 표시하고자하기 때문에. 그렇다면 왜 정보를 얻고 foreach를하지 않습니까? –

+0

쿼리의 데이터로 루프를 채우고 쿼리가 시간 낭비가되기 전에 카운트하고 잘못된 경우 (카운트와 선택 사이에 행이 삽입 됨) 반환 된 행 수를 계산하면 데이터 쿼리 – MikeT

답변

5

A 메서드를 for 루프의 조건에서 호출하지 마십시오. 모든 반복에서 루프가 실행됩니다. 루프에서 다음

public int A() { 
    int count = 0; 
    //do db stuff 
    return count; 
} 

:

이 경우
int count = A(); 
for (int i = 0; i < count; i++) 
{ 
    System.Web.UI.HtmlControls.HtmlGenericControl createDiv = ... 
} 

public int A() 
{ 
    ... 
    using (... 
    using (... 
    { 
     ... 
     return count; 
    } 
} 
+0

좋은 조언을하지만 당신은 당신이 실제로 그의 변경 내용을 수정 한'A()'의 반환 유형을 변경했다는 사실을 염두에 두었습니다. – MikeT

2

, 단순히 A() 반환 int 대신 void 할 말을

int shipCount = A(); 

for (int i = 0; i < shipCount; i++) { 
    //make div 
} 
+0

은 "cleaner"입니까? 그가 그렇지 않으면 재앙이 될 것입니다. – Igor

+0

@Igor 나는 당신의 편집을 보았습니다 - 나는 그것을 몰랐습니다! 나는 그 비트를 제거 할 것이다 – levelonehuman

+0

@Igor Disaster는 동의 할 수는 있지만 매우 강력하고, 대량으로 비효율적이다. – MikeT

1

너무 많은 것을 ^^ '경우 우선 당신은 AlgSchipInfo 테이블에있는 요소의 정보를 표시 할 필요가 있습니다. 데이터 테이블에 카운트를 가지고 나면 이들 데이터를 선택하기 만하면됩니다. 다른 것은 ORM과 같습니다.

DB에서 데이터 테이블을 가져 오면 리피터 또는 다른 compenent에 바인딩하여 항목을 나열하십시오. 처음부터 IMAO보다 효율적입니다. 당신은 환영합니다보다 구체적인 질문이있는 경우

, 그것은 반환 'count`과에 루프에 대한 귀하의 변경이,`int`를 반환하는)