<form id="form1" runat="server"> <div> <telerik:RadScriptManager runat="server"></telerik:RadScriptManager> <telerik:RadEditor runat = "server" ></telerik:RadEditor> </div></form><script type="text/javascript"> $(document).ready(function () { $("#success").load("Editor.aspx", function (response, status, xhr) { if (status == "error") { var msg = "Sorry but there was an error: "; $("#error").html(msg + xhr.status + " " + xhr.statusText); } }); }); </script>
Hello,
We have certain problem by RadGrid filter. We need to bind data using DataTable class. We have prepared data for RadGrid by combination of data from database with computed data. Therefore,the SqlDataSource is not useful for us. We have found example regarding mentioned scenario in your forum. The example uses ItemCreated event, but it doesn’t work. Data is binding correctly, however the filtering doesn’t work.
We consider the solution based on DataTable (stored
in a session) shared by controls inherited from a GridTemplateColumn.
However, this approach seems to be complicated for described aim which appears
to be trivial.
So, is there any way to accomplish the DataTable binding as a data source
for the RadGrid without harm the filtering?
Thank yout very much for your advice.
<telerik:RadGrid ID="RadGridData" runat="server" Width="100%" AutoGenerateColumns="false"
AllowPaging="true" PageSize="10" ShowGroupPanel="false" ShowFooter="true" AllowFilteringByColumn="true"
OnPreRender="RadGridData_PreRender" AllowSorting="true" AllowMultiRowSelection="false"
GridLines="None" EnableAjaxSkinRendering="true" EnableAJAX="true"
onneeddatasource="RadGridData_NeedDataSource" OnItemCreated="RadGridData_ItemCreated" ViewStateMode="Disabled">
<ExportSettings ExportOnlyData="true" IgnorePaging="true" OpenInNewWindow="true" />
<MasterTableView AutoGenerateColumns="false" EditMode="InPlace" AllowFilteringByColumn="True"
ShowFooter="True" TableLayout="Auto" DataKeyNames="Id" CommandItemDisplay="Top">
<CommandItemSettings ShowRefreshButton="false" ShowAddNewRecordButton="false" ShowExportToWordButton="true" ShowExportToExcelButton="true"
ShowExportToCsvButton="true" />
<Columns>
<telerik:GridBoundColumn UniqueName="Caption" DataField="Caption" HeaderText="Caption"
AllowFiltering="true" DataType="System.String">
<HeaderStyle Width="25%" />
<FilterTemplate>
<telerik:RadComboBox ID="RadComboBoxCaption" DataTextField="Caption" DataValueField="Caption" Height="200px" AppendDataBoundItems="true"
SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("Caption").CurrentFilterValue %>'
runat="server" OnClientSelectedIndexChanged="CaptionChanged">
<Items>
<telerik:RadComboBoxItem Text="All" />
</Items>
</telerik:RadComboBox>
<telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
<script type="text/javascript">
function CaptionChanged(sender, args) {
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
tableView.filter("Caption", args.get_item().get_value(), "EqualTo");
}
</script>
</telerik:RadScriptBlock>
</FilterTemplate>
</telerik:GridBoundColumn>
<telerik:GridDateTimeColumn DataField="DateTime" HeaderText="RTU Date and time" SortExpression="DateTime"
UniqueName="DateTime" PickerType="DateTimePicker" AllowFiltering="false">
<HeaderStyle Width="25%" />
</telerik:GridDateTimeColumn>
<telerik:GridBoundColumn UniqueName="FormatedValue" DataField="FormatedValue" HeaderText="Value"
AllowFiltering="true" DataType="System.String">
<HeaderStyle Width="25%" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="State" DataField="State" HeaderText="State"
AllowFiltering="true" DataType="System.String">
<HeaderStyle Width="25%" />
</telerik:GridBoundColumn>
</Columns>
<PagerStyle Mode="NextPrevAndNumeric" />
</MasterTableView>
</telerik:RadGrid>
protected void RadGridData_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridFilteringItem)
{
GridFilteringItem filterItem = (GridFilteringItem)e.Item;
RadComboBox combo = (RadComboBox)filterItem["Caption"].FindControl("RadComboBoxCaption");
combo.DataSource = dataTable; // this datatable is also used for binding data for table
combo.DataBind();
combo.AutoPostBack = true;
}
}
var refCbTree; var refCb; function ReferenceComboBoxOpeningHandler(sender, args) { refCb = sender; refCbTree = $find(sender.get_attributes().getAttribute("treeID")); service.LoadReferenceRoot(sender.get_attributes().getAttribute("refID"), onRequestNodesSuccess); } function onRequestNodesSuccess(result) { if (!refCbTree) return; refCb.trackChanges(); refCbTree.trackChanges(); for (i = 0; i < result.length; i++) { var node = new Telerik.Web.UI.RadTreeNode(); node.set_text(result[i].Text); node.set_value(result[i].Value); refCbTree.get_nodes().add(node); } refCbTree.commitChanges(); refCb.commitChanges();}
<telerik:RadChart ID="RC_Line1" runat="server" DataSourceID="SDS_Chart_Line1" DefaultType="Line" Skin="Office2007" AutoLayout="True" SeriesPalette="Pal1" Height="600px" Width="800px" IntelligentLabelsEnabled="True"> <CustomPalettes> <telerik:Palette Name="Pal1"> <Items> <telerik:PaletteItem MainColor="Yellow" SecondColor="Black"></telerik:PaletteItem> <telerik:PaletteItem MainColor="Blue" SecondColor="Black"></telerik:PaletteItem> <telerik:PaletteItem MainColor="Red" SecondColor="Black"></telerik:PaletteItem> <telerik:PaletteItem MainColor="Orange" SecondColor="Black"></telerik:PaletteItem> <telerik:PaletteItem MainColor="Green" SecondColor="Black"></telerik:PaletteItem> <telerik:PaletteItem MainColor="Cyan" SecondColor="Black"></telerik:PaletteItem> <telerik:PaletteItem MainColor="Magenta" SecondColor="Black"></telerik:PaletteItem> <telerik:PaletteItem MainColor="Gray" SecondColor="Black"></telerik:PaletteItem> <telerik:PaletteItem MainColor="FloralWhite" SecondColor="Black"></telerik:PaletteItem> <telerik:PaletteItem MainColor="Turquoise" SecondColor="Black"></telerik:PaletteItem> </Items> </telerik:Palette> </CustomPalettes> <Appearance Border-Visible="False"></Appearance> <ChartTitle> <Appearance> <FillStyle MainColor=""></FillStyle> </Appearance> <TextBlock Text="Pappas AUT"> <Appearance TextProperties-Font="Arial, 18px" TextProperties-Color="Black"></Appearance> </TextBlock> </ChartTitle> <Legend> <Appearance Position-AlignedPosition="Right"> <ItemTextAppearance TextProperties-Color="Black"></ItemTextAppearance> <ItemMarkerAppearance Figure="Square"></ItemMarkerAppearance> <Border Visible="False" /> </Appearance> </Legend> <PlotArea> <XAxis DataLabelsColumn="Year" LayoutMode="Normal"></XAxis> <YAxis><Appearance MinorGridLines-Visible="False"></Appearance></YAxis> </PlotArea> </telerik:RadChart>div> <telerik:RadGrid ID="RadGrid1" runat="server" GridLines="None" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" ViewStateMode="Disabled" Width="97%" enableajax="True" CssClass="productsGrid" CellSpacing="0" AllowFilteringByColumn="True" ShowFooter="True" Skin="Black" AllowMultiRowSelection="True" OnItemCommand="RadGrid1_ItemCommand" OnGridExporting="RadGrid1_GridExporting" OnNeedDataSource="RadGrid1_NeedDataSource"> <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> <ClientSettings AllowColumnsReorder="True" ReorderColumnsOnClient="True"> <Selecting AllowRowSelect="True" /> </ClientSettings> <MasterTableView GridLines="None" Width="100%" ViewStateMode="Disabled" CommandItemSettings-ShowExportToCsvButton="True" CommandItemSettings-ShowAddNewRecordButton="false" CommandItemDisplay="Top"> <Columns> <telerik:GridBoundColumn DataField="SequencialNumber" HeaderText="SequencialNumber" UniqueName="SequencialNumber" SortExpression="SequencialNumber"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Priorities.Priority" HeaderText="Priority" UniqueName="Priority" FilterControlAltText="Filter Priority column" SortExpression="Priority" DataType="System.Int32"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Staging.Process" HeaderText="Staging" UniqueName="Process" SortExpression="Process" FilterControlAltText="Filter Process column"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="SupplierCode" HeaderText="SupplierCode" UniqueName="SupplierCode" SortExpression="SupplierCode" FilterControlAltText="Filter SupplierCode column"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="MessageStatus" HeaderText="MessageStatus" UniqueName="MessageStatus" SortExpression="MessageStatus" FilterControlAltText="Filter MessageStatus column"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="DocumentType" HeaderText="DocumentType" UniqueName="DocumentType" FilterControlAltText="Filter DocumentType column" SortExpression="DocumentType"> </telerik:GridBoundColumn> <telerik:GridDateTimeColumn UniqueName="InvoiceCreationDate" DataField="InvoiceCreationDate" HeaderText="InvoiceCreationDate" FilterControlAltText="Filter InvoiceCreationDate column" SortExpression="InvoiceCreationDate"> <FilterTemplate> <telerik:RadDatePicker ID="RadDatePicker1" runat="server"> </telerik:RadDatePicker> </FilterTemplate> </telerik:GridDateTimeColumn> <telerik:GridBoundColumn DataField="SupplierVatNumber" FilterControlAltText="Filter SupplierVatNumber column" HeaderText="SupplierVatNumber" SortExpression="SupplierVatNumber" UniqueName="SupplierVatNumber"> </telerik:GridBoundColumn> </Columns> <ExpandCollapseColumn Visible="False"> <HeaderStyle Width="19px"></HeaderStyle> </ExpandCollapseColumn> <RowIndicatorColumn Visible="False"> <HeaderStyle Width="20px" /> </RowIndicatorColumn> </MasterTableView> <FilterMenu EnableImageSprites="False"> </FilterMenu> <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default"> </HeaderContextMenu> </telerik:RadGrid>public partial class InvoicesScalingDefault : Microsoft.Practices.CompositeWeb.Web.UI.Page, IInvoicesScale { private InvoicesScalePresenter _presenter; public System.Collections.Generic.IList<Data.SapDocuments> SapDocuments { get; set; } protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { this._presenter.OnViewInitialized(); } this._presenter.OnViewLoaded(); //string userLogin = Page.User.Identity.Name; } [CreateNew] public InvoicesScalePresenter Presenter { set { this._presenter = value; this._presenter.View = this; } } private void LoadData() { //Popular dados na Radlist SapDocumentsBO sapDocs = new SapDocumentsBO(); string user = Page.User.Identity.Name.Substring(Page.User.Identity.Name.IndexOf("\\") + 1); if ((user == "xxx") || (user == "xxx")) { this.SapDocuments = sapDocs.GetSapDocuments(); RadGrid1.DataSource = this.SapDocuments; } else { this.SapDocuments = sapDocs.GetSapDocumentsByUser(user); RadGrid1.DataSource = this.SapDocuments; } } protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) { LoadData(); } /// <summary> /// Export de todos os SequencialNumber da tabela para .csv /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void RadGrid1_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e) { if (e.CommandName == Telerik.Web.UI.RadGrid.ExportToCsvCommandName) { RadGrid1.MasterTableView.Columns.FindByUniqueName("SequencialNumber").Visible = true; RadGrid1.ExportSettings.IgnorePaging = true; int count = 0; foreach (GridColumn column in RadGrid1.Columns) { if (column.Visible) { if (count > 0) column.Visible = false; else count++; } } } } /// <summary> /// Método para formatar o sequencialNumber /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void RadGrid1_GridExporting(object sender, GridExportingArgs e) { e.ExportOutput = e.ExportOutput.Replace("\"\r\n\"", "\"\r\n\"'"); } } }