无法使用对象数据源进行排序

本文关键字:排序 数据源 对象 | 更新日期: 2023-09-27 18:21:14

我正在使用对象数据源来填充我的网格当我选择网格所在的页面时,它会输入select和selectcount方法,但在排序时,它给我一个未找到的列。奇怪的是,我在select方法上有一个断点,如果我尝试按字段排序,参数sSortColumn应该有列id,它应该输入断点,但它没有。

这是我的网格和对象数据源

 <ig:WebDataGrid ID="WebDataGridAutAssiduidade" runat="server" AutoGenerateColumns="False" Width="100%"
    Height="99%"  DataKeyFields="ID" DataSourceID="odsAutAssiduidade" >
     <EmptyRowsTemplate>
        Sem registos...</EmptyRowsTemplate>        
    <Columns>     
        <ig:TemplateDataField Key="chkBox" Width="40px">
            <HeaderTemplate>
                <asp:CheckBox runat="server" ID="chkAll" CssClass="center" OnClick="SelectAll(this)" />
            </HeaderTemplate>
            <ItemTemplate>
                <asp:CheckBox runat="server" ID="chk" CssClass="center" />
            </ItemTemplate>
        </ig:TemplateDataField>
        <ig:BoundDataField DataFieldName="ID" Hidden="false" Key="ID">
            <Header Text="ID" />
        </ig:BoundDataField>  
        </Columns>   
    <behaviors>
     <ig:Sorting>
        </ig:Sorting>
        <ig:EditingCore>
        </ig:EditingCore>
        <ig:ColumnResizing>
        </ig:ColumnResizing>
        <ig:Paging PagerMode="NumericFirstLast" PageSize="20" QuickPages="5">
        </ig:Paging>
        <ig:RowSelectors RowNumbering="True">
        </ig:RowSelectors>
    </behaviors>
    </ig:WebDataGrid>
    <asp:ObjectDataSource ID="odsAutAssiduidade" runat="server" EnablePaging="True" SelectCountMethod="GetAsAutAssiduidadeCount"
    SelectMethod="GetAsAutAssiduidade" TypeName="IdOntime.AsAutorizacoesAssiduidade" SortParameterName="sSortType"
    EnableCaching="True" EnableViewState="True" OldValuesParameterFormatString="original_{0}" StartRowIndexParameterName="startRowIndex" MaximumRowsParameterName="maxRows">
    <selectparameters>
   <asp:Parameter Name="sSortType" Type="String" />
</selectparameters>
</asp:ObjectDataSource>

这是的方法

 public DataTable GetAsAutAssiduidade(String sSortType, int maxRows, int startRowIndex)
    {
        return new DataTable();//testing -
    }
    public int GetAsAutAssiduidadeCount(String sSortType)
    {
        return NRows;
    }

我做错了什么?我使用的是一个名为webdatagrid的基础组件,我允许通过添加行为进行排序。

谢谢你的帮助。

无法使用对象数据源进行排序

它确实适用于常规<asp:GridView />。至于为什么没有命中断点,您可以在对象数据源中启用缓存。禁用它,这样你的断点就会触发:

<asp:ObjectDataSource ...
   EnableCaching="false" ... />

请注意,默认情况下不会对网格进行排序,因此sSortType可以是其中之一:"""ID""ID DESC"