2015-04-07 72 views
0

我读过几个关于如何在使用objectdatasource时执行排序和分页的教程。我创建了一个动态的SQL存储过程来处理分页和排序,并且在数据库端一切正常。当我点击GridView标题来执行排序时,我遇到了问题。我收到以下错误消息:GridView'EmployeeGrid'触发事件排序哪些未处理。我没有在后面的代码中编码的排序事件,我的感觉是排序可以通过将对象数据源中的排序表达式传递给我的存储过程来自动处理。如果我错了,请纠正我。有人可以提供有关如何使用objectdatasource执行排序的任何建议吗?如果我的东西配置不正确,请告诉我。此外,分页工作正常。使用objectdatasource排序gridview的问题

<asp:GridView ID="EmployeeGrid" runat="server" Width="100%" AutoGenerateColumns="False" 
       ClientIDMode="Static" EmptyDataText="" AllowSorting="True" AllowPaging="true" 
       > 
       <Columns>     
        <asp:BoundField DataField="Employee_ID" HeaderText="Employee ID" SortExpression="Employee_ID" /> 
        <asp:BoundField DataField="First_Name" HeaderText="First Name" SortExpression="First_Name" /> 
        <asp:BoundField DataField="Last_Name" HeaderText="Last Name" SortExpression="Last_Name" />    
       </Columns> 
      </asp:GridView> 

    <asp:ObjectDataSource ID="GridDataSource" runat="server" OldValuesParameterFormatString="original_{0}" 
    SelectMethod="GetDataByValue" TypeName="PO.BLL.Employee" 
    EnablePaging="True" SelectCountMethod="GetDataByValueCount" MaximumRowsParameterName="MaximumRows" 
    StartRowIndexParameterName="StartIndex" SortParameterName="sortExpression"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="txtEmployeeID" Name="Employee_ID" PropertyName="Text" 
      Type="String" /> 
     <asp:ControlParameter ControlID="txtFirstName" Name="First_Name" PropertyName="Text" 
      Type="String" /> 
     <asp:ControlParameter ControlID="txtLastName" Name="Last_Name" PropertyName="Text" 
      Type="String" /> 

    </SelectParameters> 
</asp:ObjectDataSource> 

    <DataObjectMethod(DataObjectMethodType.[Select])> _ 
    Public Function GetDataByValue(ByVal Employee_ID As String, 
             ByVal First_Name As String, _ 
             ByVal Last_Name As String, _ 
             ByVal StartIndex As Integer, _ 
             ByVal MaximumRows As Integer, _ 
             ByVal SortExpression As String 
             ) As EmployeeDS.EmployeeDataTable 



     If String.IsNullOrEmpty(SortExpression) Then 
      SortExpression = "Contract_ID" 
     End If 

     Return Me.Adapter.GetDataByValue(Employee_ID, _ 
               First_Name, _ 
               Last_Name, _ 
               StartIndex, _ 
               MaximumRows, _ 
               SortExpression 
               ) 

    End Function 

    'on search button click 
    Private Sub BindData() 
     Me.EmployeeGrid.DataSource = GridDataSource 
     Me.EmployeeGrid.DataBind() 

    End Sub 

回答

0

GridView控件有一个名为“OnSorting”这是处理该事件的后台功能的name属性。尝试添加并看看会发生什么。

+0

我是否必须编写代码来处理排序事件的排序?在我读过的大多数教程中,当从Objectdatasource传递sort参数时,它会自动排序。这是不正确的? – user3397437