Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[C#] LinqDatasource dynamic query

Pagina: 1
Acties:

  • bastv
  • Registratie: September 2005
  • Laatst online: 15-11 00:39
ik heb een gridview met een linqdatasource.
daarboven staan meerdere textboxen / dropdownlists

waaronder textbox tbOrderNr en dropdownlist ddlAfdeling
als er geen ordernummer word ingevoerd haal ik de whereparameter voor ordernr weg.
C#:
1
2
3
4
5
protected void LinqDataSource_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
if (tbOrderNr.Text.Length == 0)
            e.WhereParameters.Remove("Ordernumber");
}

dat gaat prima.

het probleem is met de dropdownlist afdeling
die heeft 3 opties: Alle, Afdeling1, Afdeling2
indien geselecteerd:
Alle -> alle ordernummers
Afdeling1 -> ordernummer 200000 t/m 399999
afdeling2 -> ordernummer 400000 t/m 499999

ik krijg dit niet goed voor mekaar met een linqdatasource
Hoe kan ik dynamisch een parameter toevoegen/aanpassen/verwijderen

linqdatasource code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        <asp:LinqDataSource ID="InspectionsLinqDataSource" runat="server" 
            ContextTypeName="VFP.Data.MES.MESDataContext" EnableDelete="True" 
            TableName="Inspections" 
            Where="StatusDate &gt;= @StatusDate &amp;&amp; StatusDate &lt;= @StatusDate1 &amp;&amp; Ordertype_ID == @Ordertype_ID &amp;&amp; Ordernumber == @Ordernumber &amp;&amp; Status_ID == @Status_ID &amp;&amp; Ordernumber &gt; @Ordervan &amp;&amp; Ordernumber &lt; @Ordertot" 
            OrderBy="Ordertype_ID, Ordernumber, Orderline" 
            onselecting="InspectionsLinqDataSource_Selecting">
            <WhereParameters>
                <asp:ControlParameter ControlID="tbDatumVan" Name="StatusDate" 
                    PropertyName="Text" Type="DateTime" />
                <asp:ControlParameter ControlID="tbDatumTm" Name="StatusDate1" 
                    PropertyName="Text" Type="DateTime" />
                <asp:ControlParameter ControlID="ddlOrderType" Name="Ordertype_ID" 
                    PropertyName="SelectedValue" Type="Int16" />
                <asp:ControlParameter ControlID="tbOrderNr" DefaultValue="0" Name="Ordernumber" 
                    PropertyName="Text" Type="Decimal" />
                <asp:ControlParameter ControlID="ddlStatus" DefaultValue="0" Name="Status_ID" 
                    PropertyName="SelectedValue" Type="Int16" />
                <asp:Parameter DefaultValue="300000" Name="Ordervan" Type="Decimal" />
                <asp:Parameter DefaultValue="500000" Name="Ordertot" Type="Decimal" />
            </WhereParameters>
        </asp:LinqDataSource>


voeg ik dan deze code toe:
C#:
1
2
3
4
5
6
7
8
9
10
        if (ddlUnit.SelectedItem.Text.ToLower() == "alle")
        {
            e.WhereParameters.Remove("Ordervan");
            e.WhereParameters.Remove("Ordertot");
        }
        else
        {
            e.WhereParameters["Ordervan"] = "300000";
            e.WhereParameters["Ordertot"] = "500000";
        }

dan krijg ik deze foutemelding:
Geen eigenschap of veld Ordervan bestaat in type Inspection
en die wordt geworpen door e.WhereParameters.Remove("Ordervan");

[ Voor 13% gewijzigd door bastv op 10-09-2008 11:43 ]


  • BramFokke
  • Registratie: Augustus 2007
  • Laatst online: 04-10-2024
Kan het zo zijn dat het de parameter voor een tweede keer wordt verwijderd? In dat geval zou iets dergelijks kunnen helpen:
C#:
1
2
3
if(e.WhereParameters.Contains("Ordervan")) {
    e.WhereParameters.Remove("Ordervan"); 
}

[ Voor 18% gewijzigd door BramFokke op 10-09-2008 11:57 ]