ObjectDataSource.SelectCountMethod Właściwość

Definicja

Pobiera lub ustawia nazwę metody lub funkcji wywoływanej przez ObjectDataSource kontrolkę w celu pobrania liczby wierszy.

public:
 property System::String ^ SelectCountMethod { System::String ^ get(); void set(System::String ^ value); };
public string SelectCountMethod { get; set; }
member this.SelectCountMethod : string with get, set
Public Property SelectCountMethod As String

Wartość właściwości

Ciąg reprezentujący nazwę metody lub funkcji używanej ObjectDataSource do pobierania liczby wierszy. Metoda musi zwrócić liczbę całkowitą (Int32). Wartością domyślną jest ciąg pusty ("").

Przykłady

W poniższych trzech przykładach pokazano stronę sieci Web, klasę strony za kodem i klasę dostępu do danych, która umożliwia użytkownikowi wybranie liczby rekordów wyświetlanych na stronie.

Strona sieci Web zawiera kontrolkę ObjectDataSource , której EnablePaging właściwość jest ustawiona na truewartość . Właściwość SelectCountMethod jest ustawiana na nazwę metody zwracającej łączną liczbę rekordów w zapytaniu. Właściwość MaximumRowsParameterName i StartRowIndexParameterName właściwość są ustawiane na nazwy parametrów używanych w metodzie Select. Strona zawiera również kontrolkę DropDownList .

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>ObjectDataSource Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    How many rows to display on this page:<br />
    <asp:DropDownList 
          AutoPostBack="true" 
          ID="rowsToDisplay" 
          runat="server" 
          onselectedindexchanged="rowsToDisplay_SelectedIndexChanged">
        <asp:ListItem Value="5"></asp:ListItem>
        <asp:ListItem Value="10" Selected="True"></asp:ListItem>
        <asp:ListItem Value="20"></asp:ListItem>
    </asp:DropDownList> 
    
    <asp:ObjectDataSource 
        SelectCountMethod="GetEmployeeCount" 
        EnablePaging="true" 
        TypeName="CustomerLogic" 
        SelectMethod="GetSubsetOfEmployees"
        MaximumRowsParameterName="maxRows"
        StartRowIndexParameterName="startRows"
        ID="ObjectDataSource1" 
        runat="server">
    </asp:ObjectDataSource>
    
    <asp:GridView 
        DataSourceID="ObjectDataSource1" 
        AllowPaging="true" 
        ID="GridView1" 
        runat="server">
    </asp:GridView>
    
    </div>
    </form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    How many rows to display on this page:<br />
    <asp:DropDownList 
          AutoPostBack="true" 
          ID="rowsToDisplay" 
          runat="server" 
          onselectedindexchanged="rowsToDisplay_SelectedIndexChanged">
        <asp:ListItem Value="5"></asp:ListItem>
        <asp:ListItem Value="10" Selected="True"></asp:ListItem>
        <asp:ListItem Value="20"></asp:ListItem>
    </asp:DropDownList> 
    
    <asp:ObjectDataSource 
        SelectCountMethod="GetEmployeeCount" 
        EnablePaging="true" 
        TypeName="CustomerLogic" 
        SelectMethod="GetSubsetOfEmployees"
        MaximumRowsParameterName="maxRows"
        StartRowIndexParameterName="startRows"
        ID="ObjectDataSource1" 
        runat="server">
    </asp:ObjectDataSource>
    
    <asp:GridView 
        DataSourceID="ObjectDataSource1" 
        AllowPaging="true" 
        ID="GridView1" 
        runat="server">
    </asp:GridView>
    
    </div>
    </form>
</body>
</html>

Drugi przykład przedstawia procedurę obsługi dla ListControl.SelectedIndexChanged zdarzenia kontrolki DropDownList . Kod w procedurze obsługi ustawia PageSize właściwość na wybór użytkownika.

protected void rowsToDisplay_SelectedIndexChanged(object sender, EventArgs e)
{
    GridView1.PageSize = int.Parse(rowsToDisplay.SelectedValue);
}
Protected Sub rowsToDisplay_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rowsToDisplay.SelectedIndexChanged
    GridView1.PageSize = Integer.Parse(rowsToDisplay.SelectedValue)
End Sub

Trzeci przykład przedstawia klasę dostępu do danych, która pobiera dane z tabeli Customers. Zawiera metodę o nazwie GetSubsetOfEmployees, która jest przypisana do SelectMethod właściwości kontrolki ObjectDataSource . Przykład zawiera również metodę o nazwie GetEmployeeCount, która jest przypisana do SelectCountMethod właściwości kontrolki ObjectDataSource . Klasa używa linQ do wykonywania zapytań względem tabeli Customers. W przykładzie jest wymagana klasa LINQ to SQL reprezentująca tabelę Northwind Database i Customers. Aby uzyskać więcej informacji, zobacz How to: Create LINQ to SQL Classes in a Web Project (Instrukcje: tworzenie klas LINQ to SQL w projekcie internetowym).

public class CustomerLogic
{

    public List<Customer> GetSubsetOfEmployees(int startRows, int maxRows)
    {
        NorthwindDataContext ndc = new NorthwindDataContext();
        var customerQuery = 
            from c in ndc.Customers
            select c;

        return customerQuery.Skip(startRows).Take(maxRows).ToList<Customer>();
    }

    public int GetEmployeeCount()
    {
        object cachedCount = HttpRuntime.Cache["TotalEmployeeCount"];
        if (cachedCount != null)
        {
            return int.Parse(cachedCount.ToString());
        }
        else
        {
            NorthwindDataContext ndc = new NorthwindDataContext();
            var totalNumberQuery =
                from c in ndc.Customers
                select c;
            
            int employeeCount = totalNumberQuery.Count();
            HttpRuntime.Cache.Add("TotalEmployeeCount", employeeCount, null, DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
            return employeeCount;
        }
    }
}
Public Class CustomerLogic
    Public Function GetSubsetOfEmployees(ByVal startRows As Integer, ByVal maxRows As Integer) As List(Of Customer)

        Dim ndc As New NorthwindDataContext()
        Dim customerQuery = _
        From c In ndc.Customers _
            Select c

        Return customerQuery.Skip(startRows).Take(maxRows).ToList()
    End Function

    Public Function GetEmployeeCount() As Integer

        Dim cachedCount = HttpRuntime.Cache("TotalEmployeeCount")
        If cachedCount IsNot Nothing Then
            Return Integer.Parse(cachedCount.ToString())
        Else
            Dim ndc As New NorthwindDataContext()
            Dim totalNumberQuery = _
            From c In ndc.Customers _
                Select c

            Dim employeeCount = totalNumberQuery.Count()
            HttpRuntime.Cache.Add("TotalEmployeeCount", employeeCount, Nothing, DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration, CacheItemPriority.Normal, Nothing)
            Return employeeCount
        End If
    End Function
End Class

Uwagi

Właściwość SelectCountMethod identyfikuje metodę obiektu biznesowego, która służy do pobierania łącznej liczby wierszy w celu obsługi stronicowania źródła danych. Właściwość SelectCountMethod jest oceniana tylko wtedy, gdy właściwość jest ustawiona EnablePaging na truewartość .

Właściwość SelectCountMethod deleguje do SelectCountMethod właściwości obiektu skojarzonego ObjectDataSourceView z kontrolką ObjectDataSource . Aby uzyskać informacje o tym, jak stronicowanie jest obsługiwane przez kontrolkę ObjectDataSource , zobacz EnablePaging.

Dotyczy

Zobacz też