2

我有一个特殊的问题,我不确定之前是否有人遇到过这个问题。但是问题是这样的..

我有一个包含 TemplateColumns 和 BoundColumns 组合的网格,当我使用模板列下的过滤器过滤网格时,我可以在 UI(网格)中看到结果,但是当我在 BoundColumns 中执行相同操作时,我看不到任何结果.. !! !

有趣的是我可以看到查询的输出,它从数据库返回正确数量的结果。并且它也在 NeedDataSource 事件中分配给 GridDataSource。但是我在 ItemDataBoundItem 中找不到 GridDataItem,我只能获取 headeritem、filteritem 和 footeritem。

即使有很多记录分配给数据源,它也会显示“没有要显示的记录”。在这里我附上屏幕截图,您可以在其中看到记录数显示但不显示记录.. !!

没有记录

非常感谢任何帮助。

这是代码示例

<ps:MassApprovalAjaxPanel runat="server" ID="m_UIRadAjaxPanel" LoadingPanelID="m_UIAsynBindLoadPanelInMasterPage">
    <ps:MassApprovalRadGrid
        runat="server"
        ID="m_UIListingGrid"
        SkinID="Grid_MassApproval"
        OnNeedDataSource="ListingGrid_NeedDataSource"
        OnItemDataBound="ListingGrid_ItemDataBound"
        AllowFilteringByColumn="true"
        EnableViewState="true">
        <MasterTableView
            DataKeyNames="CardID, WeekEnding, ClientPONumber"
            ShowFooter="true">
            <Columns>
                <ps:NumericTextBoxTemplateColumn
                    UniqueName="CardID"
                    Width="70"
                    RelativeWidthRatio="90">
                    <ItemTemplate>
                        <asp:Label
                            runat="server"
                            Text='<%# string.Format("{0}/{1}", Eval(Constants.CARD_ID), Eval(Constants.VERSION)) %>' />
                    </ItemTemplate>            
                </ps:NumericTextBoxTemplateColumn>

                <ps:TextBoxBoundColumn
                    UniqueName="ClientPONumber"
                    DataField="ClientPONumber"
                    Width="60"
                    RelativeWidthRatio="80" />
                <telerik:GridClientSelectColumn UniqueName="SelectAll" HeaderText="All" />
            </Columns>
        </MasterTableView>
    </ps:MassApprovalRadGrid>
</ps:MassApprovalAjaxPanel>



protected void ListingGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    m_UIListingGrid.DataSource = RadGridUtilUI.MassApprovalResultsGet();
}

protected void ListingGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
    GridDataItem gridDataItem = e.Item as GridDataItem;
    if (gridDataItem != null)
    {
        AddClientScripts(gridDataItem);
    }
}

谢谢,普雷瑟姆。

4

1 回答 1

2

我找到了解决这个问题的方法,它非常简单直接,但我们没有注意到它。

protected void ListingGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    m_UIListingGrid.MasterTableView.FilterExpression = string.Empty;
    m_UIListingGrid.DataSource = RadGridUtilUI.MassApprovalResultsGet();
}

Telerik 有两种类型的过滤,即内置过滤和用户定义的过滤,我们通过我们的 SP 和代码进行过滤。所以我们总是必须在进行自定义过滤之前将过滤器值设置为 null。

将此标记为答案。

谢谢,普雷瑟姆。

于 2012-08-30T15:33:04.917 回答