2010-07-19 1 views
1

ASP.NET 사이트에서 C#이 필요하지만 VB는 괜찮을 것입니다.ASP를 비활성화하는 방법이 있습니까? ListView에 Pager.PageSize 값보다 작은 값이있을 때 호출기?

나는 우리 모두가 매일 같은 상황에 빠지기 쉽다고 생각한다. ListView 또는 다른 유형의 Dababindable 객체에 바인드 된 DataObject의 PageSize 항목보다 작 으면 UI와 같은 호출기는 쓸모가 없습니다.

그래서 질문 : 어떻게 비활성화합니까?

답변

1

DataBound에서 숨길 수 있습니다. 데이터 소스의 RowCount가 호출기의 PageSize보다 작거나 같은 경우 Listview 이벤트가 발생합니다. 예를 들어 (의사 코드, yourDataSource 변경) :

Private Sub ListView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DataBound 
     Dim dataPager As DataPager = DirectCast(ListView1.FindControl("DataPager1"), DataPager) 
     dataPager.Visible = yourDataSource.Rows.Count > dataPager.PageSize 
End Sub 

편집을 : 당신은 ObjectDataSource를 사용하는 경우는 데이터 소스 (C#)를 액세스하기 위해 Selected Event을 잡을 수 :

protected void ObjectDataSource1_Selected(object sender, ObjectDataSourceStatusEventArgs e) 
{ 
     // Get total count from the ObjectDataSource 
     DataTable dt = e.ReturnValue as DataTable; 

     int totalRecordCount = dt.Rows.Count;  
} 

VB를 :

Private Sub ObjectDataSource1_Selected(ByVal sender As Object, ByVal e As ObjectDataSourceStatusEventArgs) Handles ObjectDataSource1.Selected 
     ' Get total count from the ObjectDataSource 
     Dim dt As DataTable = DirectCast(e.ReturnValue, DataTable) 
     Dim totalRecordCount As Int32 = dt.Rows.Count 
End Sub 

위의 코드를 사용하여 호출기의 표시 여부를 전환 할 수 있습니다.

+0

빠른 답장을 보내 주셔서 감사합니다.하지만 문제가 하나 있습니다. 내 데이터 소스는 행이없는 ObjectDataSource입니다. 그것을 피하려면 어떻게해야합니까? – eugeneK

+0

나는 나의 대답을 편집했다. 이 기능이 작동합니까 (테스트되지 않은)? –

+0

그것은 일하기로되어 있지만 정보를 얻는 데 너무 많은 리소스를 사용하기 때문에 간단히 확인하지 않을 것입니다. 각 페이지 액세스시 생성 될 Datatable을 생성합니다. 너무 무거워서 일해야합니다. 적절한 ListView 및 DataSource 이벤트를 가리켜 주셔서 감사합니다. – eugeneK

관련 문제