I spent way too much time finding a resolution to this issue, but I finally found an ugly way to do it so hopefully this helps someone else.
I’m doing a simple data load with a RadGrid from an SQLDataSource. However due to the nature of the page and data the initial grid is populated with over 1000 records and performance is terrible.
I want to use the Filters within each RadGrid column as my ‘Search Parameters’ rather than building it manually and passing them in to the SELECT statement.
I tried to set the DataSourceID to empty in the NeedDataSource event however I ran into a few obscure issues.
Here’s what I ended up with:
Define your Radgrid, with the DataSourceID included. In the MasterTableView, ensure you have a “NoMasterRecordsText” value.
<telerik:RadGrid ID="rgd_ComplianceEdit" runat="server" CellSpacing="0" AllowPaging="False" Height="600px" AllowFilteringByColumn="true" GridLines="None" AutoGenerateColumns="False" ShowFooter="False" OnItemDataBound="rgd_ComplianceEdit_ItemDataBound" OnInsertCommand="rgd_ComplianceEdit_InsertCommand" OnUpdateCommand="rgd_ComplianceEdit_UpdateCommand" OnNeedDataSource="rgd_ComplianceEdit_NeedDataSource" DataSourceID="sql_compliance" AllowAutomaticUpdates="True" AllowAutomaticDeletes="True" Width="100%" AllowAutomaticInserts="True" GroupingSettings-CaseSensitive="false"> <ClientSettings> <Scrolling AllowScroll="true" ScrollHeight="300px" UseStaticHeaders="true" /> <Selecting AllowRowSelect="False"></Selecting> </ClientSettings> <MasterTableView DataSourceID="sql_compliance" DataKeyNames="id" ShowHeadersWhenNoRecords="true" NoMasterRecordsText="Enter Search Term(s) for record display." CommandItemDisplay="Top" CommandItemSettings-ShowRefreshButton="false" EditMode="InPlace">
Then create an empty SQLDataSource in addition to your real data source:
<asp:SqlDataSource runat="server" ID="sql_empty" ConnectionString="<%$ ConnectionStrings:SQLConnectionString %>" SelectCommand="SELECT 1 where 1 = 0"></asp:SqlDataSource>
Now in the PageLoad event, use an if Statement to choose which data source to load.
if (!IsPostBack) { rgd_ComplianceEdit.DataSourceID = "sql_empty"; } if (IsPostBack) { rgd_ComplianceEdit.DataSourceID = "sql_compliance"; rgd_ComplianceEdit.Rebind(); }
When I load the page, the RadGrid comes up empty. When I filter on a column, it populates!