|
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
|
Tradução
Original
|
Classificando dados com controles de fonte de dados
<asp:LinqDataSource
ContextTypeName="ExampleDataContext"
TableName="Products"
AutoPage="true"
AutoSort="true"
ID="LinqDataSource1"
runat="server">
</asp:LinqDataSource>
<asp:GridView
AllowPaging="true"
AllowSorting="true"
DataSourceID="LinqDataSource1"
ID="GridView1"
runat="server">
</asp:GridView>
<asp:GridView ID="EmployeesGridView" DataSourceID="EmployeesSqlDataSource" DataKeyNames="EmployeeID" AllowSorting="True" RunAt="Server" /> <asp:SqlDataSource ID="EmployeesSqlDataSource" SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees" Connectionstring="<%$ ConnectionStrings:NorthwindConnectionString %>" RunAt="server" />
<asp:ObjectDataSource ID="EmployeesObjectDataSource" runat="server" TypeName="Samples.AspNet.Controls.NorthwindEmployee" SortParameterName="SortColumns" EnablePaging="true" StartRowIndexParameterName="StartRecord" MaximumRowsParameterName="MaxRecords" SelectMethod="GetAllEmployees" > </asp:ObjectDataSource>
public static void Initialize() { // Initialize data source. Use "Northwind" connection string from configuration. if (ConfigurationManager.ConnectionStrings["Northwind"] == null || ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString.Trim() == "") { throw new Exception("A connection string named 'Northwind' with a valid connection string " + "must exist in the <connectionStrings> configuration section for the application."); } _connectionString = ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString; _initialized = true; } // Select all employees. [DataObjectMethod(DataObjectMethodType.Select, true)] public static DataTable GetAllEmployees(string sortColumns, int startRecord, int maxRecords) { VerifySortColumns(sortColumns); if (!_initialized) { Initialize(); } string sqlCommand = "SELECT EmployeeID, LastName, FirstName, Address, City, Region, PostalCode FROM Employees "; if (sortColumns.Trim() == "") sqlCommand += "ORDER BY EmployeeID"; else sqlCommand += "ORDER BY " + sortColumns; SqlConnection conn = new SqlConnection(_connectionString); SqlDataAdapter da = new SqlDataAdapter(sqlCommand, conn); DataSet ds = new DataSet(); try { conn.Open(); da.Fill(ds, startRecord, maxRecords, "Employees"); } catch (SqlException e) { // Handle exception. } finally { conn.Close(); } if (ds.Tables["Employees"] != null) return ds.Tables["Employees"]; return null; } ////////// // Verify that only valid columns are specified in the sort expression to avoid a SQL Injection attack. private static void VerifySortColumns(string sortColumns) { if (sortColumns.ToLowerInvariant().EndsWith(" desc")) sortColumns = sortColumns.Substring(0, sortColumns.Length - 5); string[] columnNames = sortColumns.Split(','); foreach (string columnName in columnNames) { switch (columnName.Trim().ToLowerInvariant()) { case "employeeid": break; case "lastname": break; case "firstname": break; case "": break; default: throw new ArgumentException("SortColumns contains an invalid column name."); break; } } }