CancelSelectOnNullParameter non funziona!!!

giovedì 13 dicembre 2007 - 08.51

dibiax Profilo | Newbie

ciao a tutti
ho un problema con sqldatadatasource e gridview:
praticamente sqldatadatasource deve caricare una tabella e questo è stato fatto e funziona regolarmente.
Il problema è che in base al valore di alcuni controlli (textbox listbox ect) si deve applicare dinamicamente un filtro a questa gridview.
Questi controlli possono anche non essere valorizzati e in questo caso non vanno considerati:
nell'autocomposizione "configurazione origini dati" provo a impostare i parametri usando il wizard, funziona a patto che tutti i parametri inseriti siano valorizzati.
Se imposto CancelSelectOnNullParameter a false non funziona.
come posso fare?
grazie anticipatamente!


ciao ciao dibiax

amstrad Profilo | Junior Member

non sono sicuro di aver capito bene il problema, potresti postare il codice del datasource per cortesia

dibiax Profilo | Newbie

ecco la pagine.. c'è un po' di cosice in più...


<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
GridView1.Visible = True
End Sub

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim i As Integer
SqlDataSource1.DeleteCommand = "delete from ScartiStampalMAS"
SqlDataSource1.DeleteCommandType = SqlDataSourceCommandType.Text
SqlDataSource1.Delete()

Dim myConnection As Data.SqlClient.SqlConnection
Dim mySqlDataAdapter As Data.SqlClient.SqlDataAdapter
myConnection = New Data.SqlClient.SqlConnection("Data Source=EDP2000\SQLEXPRESS;Initial Catalog=scarti;Integrated Security=True")
mySqlDataAdapter = New Data.SqlClient.SqlDataAdapter("Select * from ScartiSTAMPAlMAS", myConnection)
Dim myDataSet As Data.DataSet = New Data.DataSet()
Dim myDataRow As Data.DataRow
Dim myDataRowsCommandBuilder As Data.SqlClient.SqlCommandBuilder = New Data.SqlClient.SqlCommandBuilder(mySqlDataAdapter)

For i = 0 To GridView1.Rows.Count - 1
mySqlDataAdapter.Fill(myDataSet, "ScartiStampalMAS")
myDataRow = myDataSet.Tables("ScartiStampaLMAS").NewRow()
myDataRow("ind") = CInt(GridView1.Rows.Item(i).Cells.Item(0).Text)
myDataRow("repa") = GridView1.Rows.Item(i).Cells.Item(1).Text
myDataRow("data") = GridView1.Rows.Item(i).Cells.Item(2).Text
myDataRow("turno") = GridView1.Rows.Item(i).Cells.Item(3).Text
myDataRow("OPE") = GridView1.Rows.Item(i).Cells.Item(4).Text
myDataRow("lotto") = GridView1.Rows.Item(i).Cells.Item(5).Text
myDataRow("fase") = GridView1.Rows.Item(i).Cells.Item(6).Text
myDataRow("articolo") = GridView1.Rows.Item(i).Cells.Item(7).Text
myDataRow("des articolo") = GridView1.Rows.Item(i).Cells.Item(8).Text
myDataRow("pzzlav") = GridView1.Rows.Item(i).Cells.Item(9).Text
myDataRow("pzzsel") = GridView1.Rows.Item(i).Cells.Item(10).Text
myDataRow("pzzok") = GridView1.Rows.Item(i).Cells.Item(11).Text
myDataRow("avvio") = GridView1.Rows.Item(i).Cells.Item(12).Text
myDataRow("materiale") = GridView1.Rows.Item(i).Cells.Item(13).Text
myDataRow("lavorazione") = GridView1.Rows.Item(i).Cells.Item(14).Text
myDataRow("vernic-lavorazione") = GridView1.Rows.Item(i).Cells.Item(15).Text
myDataRow("serigraf-stampa") = GridView1.Rows.Item(i).Cells.Item(16).Text
myDataRow("imbosstrancia") = GridView1.Rows.Item(i).Cells.Item(17).Text
myDataRow("trancia") = GridView1.Rows.Item(i).Cells.Item(18).Text
myDataRow("piegatura") = GridView1.Rows.Item(i).Cells.Item(19).Text
myDataRow("graffi-macchie") = GridView1.Rows.Item(i).Cells.Item(20).Text
myDataRow("stampaggio") = GridView1.Rows.Item(i).Cells.Item(21).Text
myDataRow("emblema") = GridView1.Rows.Item(i).Cells.Item(22).Text
myDataRow("fondello") = GridView1.Rows.Item(i).Cells.Item(23).Text
myDataRow("fregio-sigla finita") = GridView1.Rows.Item(i).Cells.Item(24).Text
myDataRow("scarto-fornitore") = GridView1.Rows.Item(i).Cells.Item(25).Text
myDataRow("ripresa-tornitore") = GridView1.Rows.Item(i).Cells.Item(26).Text
myDataRow("ricambi") = GridView1.Rows.Item(i).Cells.Item(27).Text
myDataRow("TOTSCARTO") = GridView1.Rows.Item(i).Cells.Item(28).Text
myDataRow("PERCSCARTO") = GridView1.Rows.Item(i).Cells.Item(29).Text
myDataRow("obiettivoSCARTO") = GridView1.Rows.Item(i).Cells.Item(30).Text
myDataRow("percpezziok") = GridView1.Rows.Item(i).Cells.Item(31).Text
myDataRow("percricambisulav") = GridView1.Rows.Item(i).Cells.Item(32).Text
myDataRow("TLAVORE") = GridView1.Rows.Item(i).Cells.Item(33).Text
myDataRow("TLAVMIN") = GridView1.Rows.Item(i).Cells.Item(34).Text
myDataRow("SETORE") = GridView1.Rows.Item(i).Cells.Item(35).Text
myDataRow("SETMIN") = GridView1.Rows.Item(i).Cells.Item(36).Text
myDataRow("fermoMore") = GridView1.Rows.Item(i).Cells.Item(37).Text
myDataRow("FermoMmin") = GridView1.Rows.Item(i).Cells.Item(38).Text
myDataRow("ProdpzzOra") = CDbl(GridView1.Rows.Item(i).Cells.Item(39).Text)
myDataRow("ObiettpzzOra") = Trim(GridView1.Rows.Item(i).Cells.Item(40).Text)
myDataRow("note") = GridView1.Rows.Item(i).Cells.Item(41).Text
myDataRow("MACCHINA") = GridView1.Rows.Item(i).Cells.Item(42).Text
myDataRow("cturno") = GridView1.Rows.Item(i).Cells.Item(43).Text
myDataSet.Tables("ScartiStampaLMAS").Rows.Add(myDataRow)
mySqlDataAdapter.Update(myDataSet, "ScartiStampaLMAS")
GridView1.DataBind()
Next i

End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Pagina senza titolo</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<table border="1" style="width: 700px">
<tr>
<td>
</td>
<td style="text-align: center">
MENU' STAMPE</td>
<td style="width: 106px">
</td>
</tr>
</table>
<br />
<table border="1" style="width: 539px">
<tr>
<td style="width: 162px">
codice articolo</td>
<td>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
<br />
<asp:ListBox ID="ListBox1" runat="server" DataSourceID="SqlDataSource2" DataTextField="articolo"
DataValueField="articolo" Height="21px" Width="252px" Rows="1">
</asp:ListBox><asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:articoli %>"
SelectCommand="SELECT [articolo] FROM [articoli] WHERE ([codice] = @codice)">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" Name="codice" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</td>
<td>
</td>
</tr>
<tr>
<td style="width: 162px">
data inizio</td>
<td>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td>
<td>
</td>
</tr>
<tr>
<td style="width: 162px">
data fine</td>
<td>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox></td>
<td>
<asp:Button ID="Button1" runat="server" Text="CERCA" OnClick="Button1_Click" Width="81px" /></td>
</tr>
<tr>
<td style="width: 162px">
repa</td>
<td>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox></td>
<td>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="GENERA" /></td>
</tr>
</table>
<br />
<br />
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ind" DataSourceID="SqlDataSource1" Visible="False">
<Columns>
<asp:BoundField DataField="ind" HeaderText="ind" ReadOnly="True" SortExpression="ind" />
<asp:BoundField DataField="repa" HeaderText="repa" SortExpression="repa" />
<asp:BoundField DataField="data" HeaderText="data" SortExpression="data" />
<asp:BoundField DataField="turno" HeaderText="turno" SortExpression="turno" />
<asp:BoundField DataField="ope" HeaderText="ope" SortExpression="ope" />
<asp:BoundField DataField="lotto" HeaderText="lotto" SortExpression="lotto" />
<asp:BoundField DataField="fase" HeaderText="fase" SortExpression="fase" />
<asp:BoundField DataField="articolo" HeaderText="articolo" SortExpression="articolo" />
<asp:BoundField DataField="des articolo" HeaderText="des articolo" SortExpression="des articolo" />
<asp:BoundField DataField="pzzlav" HeaderText="pzzlav" SortExpression="pzzlav" />
<asp:BoundField DataField="pzzsel" HeaderText="pzzsel" SortExpression="pzzsel" />
<asp:BoundField DataField="pzzok" HeaderText="pzzok" SortExpression="pzzok" />
<asp:BoundField DataField="avvio" HeaderText="avvio" SortExpression="avvio" />
<asp:BoundField DataField="materiale" HeaderText="materiale" SortExpression="materiale" />
<asp:BoundField DataField="lavorazione" HeaderText="lavorazione" SortExpression="lavorazione" />
<asp:BoundField DataField="vernic-lavorazione" HeaderText="vernic-lavorazione" SortExpression="vernic-lavorazione" />
<asp:BoundField DataField="serigraf-stampa" HeaderText="serigraf-stampa" SortExpression="serigraf-stampa" />
<asp:BoundField DataField="imbosstrancia" HeaderText="imbosstrancia" SortExpression="imbosstrancia" />
<asp:BoundField DataField="trancia" HeaderText="trancia" SortExpression="trancia" />
<asp:BoundField DataField="piegatura" HeaderText="piegatura" SortExpression="piegatura" />
<asp:BoundField DataField="graffi-macchie" HeaderText="graffi-macchie" SortExpression="graffi-macchie" />
<asp:BoundField DataField="stampaggio" HeaderText="stampaggio" SortExpression="stampaggio" />
<asp:BoundField DataField="emblema" HeaderText="emblema" SortExpression="emblema" />
<asp:BoundField DataField="Fondello" HeaderText="Fondello" SortExpression="Fondello" />
<asp:BoundField DataField="fregio-sigla finita" HeaderText="fregio-sigla finita"
SortExpression="fregio-sigla finita" />
<asp:BoundField DataField="scarto-fornitore" HeaderText="scarto-fornitore" SortExpression="scarto-fornitore" />
<asp:BoundField DataField="ripresa-tornitore" HeaderText="ripresa-tornitore" SortExpression="ripresa-tornitore" />
<asp:BoundField DataField="ricambi" HeaderText="ricambi" SortExpression="ricambi" />
<asp:BoundField DataField="totscarto" HeaderText="totscarto" SortExpression="totscarto" />
<asp:BoundField DataField="percscarto" HeaderText="percscarto" SortExpression="percscarto" />
<asp:BoundField DataField="obiettivoscarto" HeaderText="obiettivoscarto" SortExpression="obiettivoscarto" />
<asp:BoundField DataField="percpezziok" HeaderText="percpezziok" SortExpression="percpezziok" />
<asp:BoundField DataField="percricambisulav" HeaderText="percricambisulav" SortExpression="percricambisulav" />
<asp:BoundField DataField="TlavOre" HeaderText="TlavOre" SortExpression="TlavOre" />
<asp:BoundField DataField="TlavMin" HeaderText="TlavMin" SortExpression="TlavMin" />
<asp:BoundField DataField="SetOre" HeaderText="SetOre" SortExpression="SetOre" />
<asp:BoundField DataField="SetMin" HeaderText="SetMin" SortExpression="SetMin" />
<asp:BoundField DataField="FermoMOre" HeaderText="FermoMOre" SortExpression="FermoMOre" />
<asp:BoundField DataField="FermoMMin" HeaderText="FermoMMin" SortExpression="FermoMMin" />
<asp:BoundField DataField="prodpzzora" HeaderText="prodpzzora" SortExpression="prodpzzora" />
<asp:BoundField DataField="obiettPzzOra" HeaderText="obiettPzzOra" SortExpression="obiettPzzOra" />
<asp:BoundField DataField="Note" HeaderText="Note" SortExpression="Note" />
<asp:BoundField DataField="ordine" HeaderText="ordine" SortExpression="ordine" />
<asp:BoundField DataField="macchina" HeaderText="macchina" SortExpression="macchina" />
<asp:BoundField DataField="cturno" HeaderText="cturno" SortExpression="cturno" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:STAMPE %>"
EnableCaching="True" SelectCommand="SELECT * FROM [ScartiRepa] WHERE (([articolo] = @articolo) AND ([data] >= @data) AND ([repa] = @repa) AND ([data] <= @data2))" CancelSelectOnNullParameter="False">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" Name="articolo" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TextBox2" Name="data" PropertyName="Text" Type="DateTime" />
<asp:ControlParameter ControlID="TextBox3" Name="repa" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TextBox4" Name="data2" PropertyName="Text" Type="DateTime" />
</SelectParameters>
</asp:SqlDataSource>

</div>
</form>
</body>
</html>



ho bisogno che i parametri articolo, data , data2 e repa siano opzionali, la query deve girare anche senza che uno di questi parametri sia valorizzato.. da documentazione sembrebbe bastare mettere CancelSelectOnNullParameter a false.. ma non funziona!

amstrad Profilo | Junior Member

un primo appunto, io sono abbastanza nuovo del forum ma credo che quando posti del codice devi formattarlo con formatta codice altrimenti fai un post lunghissimo...

poi veniamo al dunque

ho fatto delle prove perchè oggi non ho molto da fare
effettivamente non mi ha funzionato finche non ho modificato la sintassi della query

SelectCommand="SELECT au_id, au_lname, au_fname, state FROM authors WHERE state = IsNull(@state, state)"

così funziona.

SelectCommand="SELECT au_id, au_lname, au_fname, state FROM authors WHERE state = @state"

così non mi ritorna nulla nel caso non metta i paramentri, prova a modificare la tua query in questo modo anche se non sò se è la giusta soluzione. Comunque con me ha funzionato

fammi sapere

dibiax Profilo | Newbie

scusa per il codice... si vede che è il primo post!
Grazie infinite.. come mi hai consigliato funziona benissimo!!
Ancora grazie ciao ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5