Sdílet prostřednictvím


ObjectDataSource.SelectCountMethod Vlastnost

Definice

Získá nebo nastaví název metody nebo funkce, kterou ObjectDataSource ovládací prvek vyvolá k načtení počtu řádků.

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

Hodnota vlastnosti

Řetězec, který představuje název metody nebo funkce, kterou ObjectDataSource používá k načtení počtu řádků. Metoda musí vrátit celé číslo (Int32). Výchozí hodnota je prázdný řetězec ("").

Příklady

Následující tři příklady ukazují webovou stránku, třídu kódu za stránkou a třídu přístupu k datům, která uživateli umožňují vybrat, kolik záznamů se na stránce zobrazí.

Webová stránka obsahuje ObjectDataSource ovládací prvek, jehož EnablePaging vlastnost je nastavena na true. Vlastnost SelectCountMethod je nastavena na název metody, která vrací celkový počet záznamů v dotazu. Vlastnost MaximumRowsParameterName a StartRowIndexParameterName vlastnost jsou nastaveny na názvy parametrů, které se používají v metodě Select. Stránka obsahuje DropDownList také ovládací prvek.

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

Druhý příklad ukazuje obslužnou rutinu pro ListControl.SelectedIndexChanged událost DropDownList ovládacího prvku. Kód v obslužné rutině nastaví PageSize vlastnost na výběr uživatele.

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

Třetí příklad ukazuje třídu přístupu k datům, která načítá data z tabulky Customers. Obsahuje metodu s názvem GetSubsetOfEmployees, která je přiřazena k SelectMethod vlastnosti ObjectDataSource ovládacího prvku. Příklad také obsahuje metodu s názvem GetEmployeeCount, která je přiřazena k SelectCountMethod vlastnosti ObjectDataSource ovládacího prvku. Třída používá LINQ k dotazování na tabulku Customers. Příklad vyžaduje třídu LINQ to SQL, která představuje databázi Northwind a tabulku Customers. Další informace naleznete v tématu Postupy: Vytvoření tříd LINQ to SQL ve webovém projektu.

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

Poznámky

Vlastnost SelectCountMethod identifikuje metodu obchodního objektu, která se používá k načtení celkového počtu řádků pro podporu stránkování zdroje dat. Vlastnost SelectCountMethod je vyhodnocena pouze v případě, že je vlastnost nastavena EnablePaging na true.

Vlastnost SelectCountMethod deleguje na SelectCountMethod vlastnost objektu ObjectDataSourceView , který je přidružen k ObjectDataSource ovládacího prvku. Informace o tom, jak ovládací prvek podporuje ObjectDataSource stránkování, naleznete v tématu EnablePaging.

Platí pro

Viz také