I am struggling to get an LLBLGenProDatasource (self servicing) to work in LivePersistence=false mode.
I suspect I am missing something obvious, but I am an LLBL noob. Love the product, though
I have a devexpress grid bound to LLBLGenProDatasource1. The database table it is bound to has about 3 million rows, so I only want to populate it with a filtered set.
Everything works perfectly if I have livepersistence=true, and do a filter on initial page load that returns no data, then apply filter criteria on a button click event. Impressive server side paging with efficient queries, very fast - love it.
This is the code:
In the aspx:
<llblgenpro:LLBLGenProDataSource ID="LLBLGenProDataSource1" runat="server"
DataContainerType="EntityCollection" EntityCollectionTypeName="busphones.CollectionClasses.YellowFedCollection, busphones"
EnablePaging="True">
</llblgenpro:LLBLGenProDataSource>
<dx:ASPxGridView ID="ASPxGridView1" runat="server"
AutoGenerateColumns="False" DataSourceID="LLBLGenProDataSource1"
DataSourceForceStandardPaging="True">
<Columns>
<dx:GridViewDataTextColumn FieldName="Addr1" VisibleIndex="0">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Addr2" VisibleIndex="1">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Category" VisibleIndex="2">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Company" VisibleIndex="3">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Electorate" VisibleIndex="4">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Email" VisibleIndex="5">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Fax1" VisibleIndex="6">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Fax2" VisibleIndex="7">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="FederalElc" VisibleIndex="8">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Latitude" VisibleIndex="9">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Longitude"
VisibleIndex="10">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Phone" VisibleIndex="11">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Postcode" VisibleIndex="12">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Region" VisibleIndex="13">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="State" VisibleIndex="14">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Suburb" VisibleIndex="15">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Website" VisibleIndex="16">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="YellowId" VisibleIndex="17">
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
In the aspx.cs:
using System.Configuration;
using System.Text;
using SD.LLBLGen.Pro.ORMSupportClasses;
using busphones.TypedViewClasses; //the llbl class
using busphones.HelperClasses;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//returns no data, to keep grid empty
PredicateExpression filter = new PredicateExpression();
filter.Add(YellowFedFields.Company == "");
filter.Add(YellowFedFields.region == "");
LLBLGenProDataSource1.FilterToUse = filter;
}
}
protected void btnSearch_Click(object sender, EventArgs e)
{
PredicateExpression filter = new PredicateExpression();
filter.Add(new FieldLikePredicate(YellowFedFields.Company, null, txtCompany.Text.Trim() + "%"));
filter.Add(YellowFedFields.region == ddlRegion.Text);
LLBLGenProDataSource1.FilterToUse = filter;
ASPxGridView1.DataBind();
}
... etc
The above works perfectly.
I cant find a 'How To' in the docs, or samples (forgive my blindness if I missed it..), on how to set up the performselect code to acheive the same as above with livepersistence=false.
I have tried heaps of options in the performselect handler, a variety of .Select(), .Databind(), on grid & datasource, refetch=true, etc & I never get any data into the grid.
Would it be possible to get a little code snippet of how to apply filter to the datasource, initiated by a button click?
What code goes into the button click event?
What is the code in the perform_select?