我有一个带有自定义列的telerik radgrid。当满足特定条件时,该列会显示一个小图标(如果隐藏列具有值)。 当前排序适用于所有普通列,但在尝试排序自定义时,我得到通常的“服务器无法解析数据”错误
以下是radgrid代码:
<telerik:RadGrid
AllowSorting="true"
AllowPaging="True"
OnSortCommand="ResultGrid_Validazioni_SortCommand"
ID="ResultGrid_Validazioni"
runat="server"
AutoGenerateColumns="False"
CellPadding="0"
PageSize="10"
OnPageIndexChanged="ResultGrid_Validazioni_PageIndexChanged"
PageSizeChanged="ResultGrid_Validazioni_PageSizeChanged"
OnSelectedIndexChanged="ResultGrid_Validazioni_SelectedIndexChanged"
EnableEmbeddedSkins="false"
Skin="GridMetroEB"
OnItemDataBound="ResultGrid_Validazioni_ItemDataBound"
>
<SortingSettings SortToolTip="Premi qui per ordinare" SortedAscToolTip="Ordinamento crescente" SortedDescToolTip="Ordinamento decrescente" />
<MasterTableView AllowMultiColumnSorting="true" >
<NoRecordsTemplate>
<b>   </b>
</NoRecordsTemplate>
<Columns>
<telerik:GridBoundColumn UniqueName="RefKeyFonte" HeaderText="RefKeyFonte" DataField="RefKeyFonte" Display="false"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="CodiceCompagnia" HeaderText="CodiceCompagnia" DataField="Compagnia" Display="false"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="CodiceEnte" HeaderText="CodiceEnte" DataField="Ente" Display="false"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="CodiceSubEnte" HeaderText="CodiceSubEnte" DataField="SubEnte" Display="false"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="TipoDaValidare" HeaderText="TipoDaValidare" DataField="TipoDaValidare" Display="false"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="PuntoVendita" HeaderText="Punto Vendita" DataField="PuntoVendita" ></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Descrizione" HeaderText="Descrizione" DataField="Description" ></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="TipoValidazione" HeaderText="Tipo Validazione" DataField="TipoValidazione"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="DataInserimento" HeaderText="Data Inserimento" DataField="DataInserimento"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="DataUltimaOperazione" HeaderText="Data Ultima Operazione" DataField="DataUltimaOperazione" ></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="DataUltimaValidazione" HeaderText="Data Ultima Validazione" DataField="DataPrecedenteApprovazione" ></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Stato" HeaderText="Stato" DataField="Stato" ></telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Nota" SortExpression="Nota">
<ItemTemplate>
<asp:ImageButton ID="btn_Nota" ImageUrl="../i/ElementiBase/Pad_25px.gif" OnClick="btn_Nota_Click" runat="server" Enabled="false"/>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn UniqueName="Note" HeaderText="Note" DataField="Note" Display="false" ></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="HasEsito" HeaderText="HasEsito" DataField="HasEsito" Display="false"></telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<ClientSettings Selecting-AllowRowSelect="True" EnablePostBackOnRowClick="True">
<ClientEvents OnRowClick="OnRowSelectingValidazioni" ></ClientEvents>
</ClientSettings>
</telerik:RadGrid>
以下是执行常规排序的代码:
protected void ResultGrid_Validazioni_SortCommand(object source, Telerik.Web.UI.GridSortCommandEventArgs e)
{
RadGrid target = source as RadGrid;
IWFCachedSearch searchProvider = CachedSearchProvider.GetWFCachedSearch(target.ID);
List<Infrastructure.Helpers.SortingExp> sortingExp = new List<Infrastructure.Helpers.SortingExp>();
foreach (GridSortExpression s in (source as RadGrid).MasterTableView.SortExpressions)
{
Infrastructure.Helpers.SortingExp sx = new Infrastructure.Helpers.SortingExp();
sx.FieldName = s.FieldName;
sx.SortDirection = s.SortOrderAsString();
sortingExp.Add(sx);
}
// A Command could be fired also for a changed sort order.
var sl = (from Infrastructure.Helpers.SortingExp s in sortingExp where s.FieldName == e.SortExpression select s).SingleOrDefault();
if (sl != null)
{
sl.SortDirection = e.NewSortOrder.ToString();
}
else
{
Infrastructure.Helpers.SortingExp sxn = new Infrastructure.Helpers.SortingExp();
sxn.FieldName = e.SortExpression;
sxn.SortDirection = e.NewSortOrder.ToString();
sortingExp.Add(sxn);
}
target.DataSource = ValidazioneGridFormat(searchProvider.GetData(sortingExp) as IEnumerable<ValidazioneBaseDto>);
target.DataBind();
}
非常感谢任何帮助。