【问题标题】:Cant sort using object datasource无法使用对象数据源进行排序
【发布时间】:2014-09-09 09:12:10
【问题描述】:

我正在使用 objectdatasource 来填充我的网格 当我选择网格所在的页面时,它进入方法 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 的基础架构组件,并且我允许通过添加行为来进行排序。

感谢您的帮助。

【问题讨论】:

    标签: c# objectdatasource


    【解决方案1】:

    它对我来说确实适用于常规的&lt;asp:GridView /&gt;。至于为什么没有命中断点 - 您在对象数据源中启用缓存。禁用它,这样你的断点就会触发:

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

    请注意,默认情况下网格未排序,因此 sSortType 可以是以下之一:"""ID""ID DESC"

    【讨论】:

    • 在我们的例子中还有一件事,第一次单击列会改变排序值还是保持排序值。我的情况是,在加载网格后,我选择一列进行排序,然后单击它。参数为空,然后我再次单击它,参数为“field”,然后如果我再次单击它,它会显示“field desc”。问题是第一次点击说明排序列是“”,而它应该是“字段描述”。这是组件的问题吗?
    • @HugoSilva - 对我来说它首先是空的,然后是字段,然后是字段 desc。我会检查您如何设置默认排序列(如果您这样做)或尝试明确设置它。我不会成为一个很好的资源,因为我没有使用您的网格组件的经验。
    • 好的,我只是想看看执行是否相同..感谢您的帮助。
    猜你喜欢
    • 2017-12-29
    • 2013-09-06
    • 2023-03-14
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 2016-12-05
    • 2021-07-13
    • 2013-03-02
    相关资源
    最近更新 更多