33 messaggi dal 03 dicembre 2004
Ciao,
stò cercando di implementare una semplice gridview filtrata da delle semplici dropdownlist..ma non ci riesco perchè i valori nella clausola where sono sempre valorizzati!

questo è il codice:

                  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
                      <Columns>
                          <asp:BoundField DataField="study_code" HeaderText="Study Code" />
                          <asp:BoundField DataField="generic_name" HeaderText="Generic name" />
                          <asp:BoundField DataField="commercial_name" HeaderText="Commercial name " />
                          <asp:TemplateField HeaderText="Profile">
                            <ItemTemplate>
                                <asp:HyperLink runat="server" ImageUrl="images/arrow.gif" NavigateUrl="registry_detail.aspx?id=<%# Eval('id_clinical_profile') %>"></asp:HyperLink>
                            </ItemTemplate>
                          </asp:TemplateField>

                      </Columns>
                  </asp:GridView>
                          <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
                              SelectCommand="SELECT [id_clinical_profile], [study_code], [commercial_name], [generic_name] FROM [clinical_profiles] WHERE (([id_recruitment_status] = @id_recruitment_status) AND ([id_therapeutic_area] = @id_therapeutic_area) AND ([study_code] LIKE '%' + @study_code + '%'))">
                              <SelectParameters>
                                  <asp:ControlParameter ControlID="DropDownList2" Name="id_recruitment_status" PropertyName="SelectedValue"
                                      Type="Int32" />
                                  <asp:ControlParameter ControlID="DropDownList1" Name="id_therapeutic_area" PropertyName="SelectedValue"
                                      Type="Int32" />
                                  <asp:ControlParameter ControlID="gen_search" Name="study_code" PropertyName="Text"
                                      Type="String" />
                              </SelectParameters>
                          </asp:SqlDataSource>


questa è la TABLE dove ci sono le drodownlist


<table width="440" height="30" border="0" cellpadding="0" cellspacing="0" bgcolor="#DFEAF4">
<tr valign="middle">
<td width="130" style="padding-left:5px"><strong>Generic Search </strong></td>
<td style="padding-left:5px"><asp:TextBox ID="gen_search" runat="server" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; height:18px; width:230px; "></asp:TextBox>&nbsp;&nbsp;
<input type="submit" name="submit" value="GO" style="font-weight:bold; font-size:10px; font-family:Verdana, Arial, Helvetica, sans-serif;" />
</td>
</tr>
</table>
<p>&nbsp;</p>
<table width="440" border="0" cellpadding="0" cellspacing="0">
<tr valign="middle" bgcolor="#E6E6E6">
<td width="130" height="30" style="padding-left:5px"><strong>Specific search </strong></td>
<td style="padding-left:5px">&nbsp;</td>
</tr>
<tr valign="middle">
<td height="1" colspan="2"><img src="../../pics/blank.gif" width="1" height="1"></td>
</tr>
<tr valign="middle" bgcolor="#EFEFEF">
<td height="30" style="padding-left:5px">Therapeutic area:</td>
<td style="padding-left:5px">
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2"
DataTextField="therapeutic_area" DataValueField="id_therapeutic_area" OnDataBound="DropDownList1_DataBound">
<asp:ListItem Selected="True" Value="-1">--&gt;</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [id_therapeutic_area], [id_lang], [therapeutic_area] FROM [therapeutic_area] WHERE ([id_lang] = @id_lang)">
<SelectParameters>
<asp:SessionParameter DefaultValue="1" Name="id_lang" SessionField="id_lang" Type="Byte" />
</SelectParameters>
</asp:SqlDataSource>

</td>
</tr>
<tr valign="middle">
<td height="1" colspan="2"><img src="../../pics/blank.gif" width="1" height="1"></td>
</tr>
<tr valign="middle" bgcolor="#EFEFEF">
<td height="30" style="padding-left:5px">Recruitment status:</td>
<td style="padding-left:5px">
<asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource3"
DataTextField="recruitment_status" DataValueField="id_recruitment_status" OnDataBound="DropDownList2_DataBound">
<asp:ListItem Value="-1">--&gt;</asp:ListItem>
</asp:DropDownList><asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [id_recruitment_status], [id_lang], [recruitment_status] FROM [recruitment_status] WHERE ([id_lang] = @id_lang)">
<SelectParameters>
<asp:SessionParameter DefaultValue="1" Name="id_lang" SessionField="id_lang" Type="Byte" />
</SelectParameters>
</asp:SqlDataSource>

</td>
</tr>
<tr valign="middle">
<td height="1" colspan="2"><img src="../../pics/blank.gif" width="1" height="1"></td>
</tr>
<tr valign="middle" bgcolor="#EFEFEF">
<td height="30" style="padding-left:5px"></td>
<td style="padding-left:5px">
<input type="submit" name="submit" value="GO" style="font-weight:bold; font-size:10px; font-family:Verdana, Arial, Helvetica, sans-serif;" />
</td>

</tr>
</table>
[/code>

Ma perchè è cosi complicato??

Qualcuno che mi sà aiutare? thx
Modificato da satoshy il 13 dicembre 2006 14.12 -
cosa intendi di preciso con:


ma non ci riesco perchè i valori nella clausola where sono sempre valorizzati!


ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
41 messaggi dal 24 novembre 2006
Immagino che intenda che vuole filtrare ad esempio per NOME e NUMERO DI TELEFONO
Ovviamente se nella clausola WHERE c'è indicato WHERE NOME=@nome AND NUMERO=@numero dovrebbe specificare su tutte e due le dropdown list i valori corrispondenti ad un record.
LA soluzione più semplice sarebbe, in questo caso, trasformare la clausola WHERE in

WHERE NOME=@nome OR NUMERO=@numero

in questo caso avresti i risultati per entrambi i filtri.

...se questo era il tuo problema
33 messaggi dal 03 dicembre 2004
Se ho una select così: .. WHERE variabile = @id_variabile AND variabile2 = @id_variabile2

E ho due dropdownlist però ne valorizzo solo una la query esegue WHERE variabile = 5 AND variabile2 = -1

E non visualizza niente..

Mentre io voglio che se variabile2 non è selezionata la query select esegue: WHERE variabile = @id_variabile (a basta)


Non so se mi hai capito

41 messaggi dal 24 novembre 2006
esatto
sostituisci AND con OR nella clausola e ti funziona... vedrai
33 messaggi dal 03 dicembre 2004
Si ma non si risolve il problema.. Perchè poi seleziona i record con OR e non posso dire preni tutti i record con id_categoria = 1 E id_altra_categoria = 4

Ma c'è un modo per risolvere con il datasource oppure devo costrire la query dinamicamente?
devi creare uan queri più complessa, considera che puoi usare condizioni tipi if, case ecc ecc

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
41 messaggi dal 24 novembre 2006
Anche costruirla dinamicamente prima del binding non è la fine del mondo
La select mi sembra sia una proprietà...
Aggiungi le condizioni di WHERE in AND l'una all'altra solo per i controlli con valori selezionati

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.