Selezione multipla in Gridview e Crystal Report

lunedì 01 dicembre 2014 - 10.23
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010

base_b Profilo | Newbie

Buongiorno a tutti e buon dicembre,

mi rivolgo a voi per chiudere il cerchio in un progetto a cui sto lavorando ora. Diciamo che ho fatto da me il 95% (almeno spero...) ma mi manca un ultimo consiglio.

Ho un'applicazione Asp.net (in Vb) che gestisce i tesseramenti di un'associazione. Ho creato una pagina in cui in una gridview sono elencati tutti i soci che hanno rinnovato la tessera. In pratica dovrei far si che selezionando n. soci mi elabori la stampa delle etichette per le buste che userò per spedire la tessera.

Ho inserito nella gridview una colonna come "ItemTemplate" e c'ho messo all'interno un checkbox per consentire la scelta multipla.
In Code Behind ho detto che per ogni riga selezionata nella gridview, devo selezionare l'ID presente in anagrafica, filtrare la tabella, salvare in un dataset ed utilizzare i dati in esso contenuti per un report in Crystal reports in cui ho creato le etichette.

Funziona praticamente tutto tranne il fatto che:
- non so come dire: pulisci il dataset e rielabora la richiesta
- mi elabora solo l'ultima riga in cui ho selezionato il checkbox. Quindi credo di aver sbagliato, oppure omesso, qualcosa nel code-behind.

PS: per capire se i dati selezionati erano corretti in fase di sviluppo avevo aggiunto un secondo gridview per evitare l'elaborazione del report.
Questo è il contenuto della pagina:

<asp:Button ID="CheckAll" runat="server" Text="Check All" />
<asp:Button ID="UncheckAll" runat="server" Text="Uncheck All" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField HeaderText="Seleziona">
<ItemTemplate>
<asp:CheckBox ID="RowSelector" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" Visible="False" />
<asp:BoundField DataField="Cognome" HeaderText="Cognome" SortExpression="Cognome" />
<asp:BoundField DataField="Nome" HeaderText="Nome" SortExpression="Nome" />
<asp:BoundField DataField="Data" HeaderText="Data" SortExpression="Data" DataFormatString="{0:dd/MM/yyyy}" />
<asp:BoundField DataField="Tessera" HeaderText="Tessera" SortExpression="Tessera" />
</Columns>
</asp:GridView>
<asp:GridView ID="GridView2" runat="server">
</asp:GridView>
<asp:Button ID="Button2" runat="server" Text="Elabora Etichette" OnClick="Button2_Click" />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:GestioneSociConnectionString %>" SelectCommand="SELECT [ID], [Cognome], [Nome], [Data], [Tessera] FROM [V_SelezioneXEtichette]"></asp:SqlDataSource>
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="True" Height="1202px" ToolPanelWidth="200px" Width="1104px" />

Questo è il codebehind:
Protected Sub Button2_Click(sender As Object, e As EventArgs)
If Not IsPostBack Then
Dim dt As DataTable
Dim sConstr As String = ConfigurationManager.ConnectionStrings("GestioneSociConnectionString").ConnectionString
For Each row As GridViewRow In GridView1.Rows
Dim cb As CheckBox = row.FindControl("RowSelector")
If cb IsNot Nothing AndAlso cb.Checked Then
Dim IDN As Integer = Convert.ToInt32(GridView1.DataKeys(row.RowIndex).Value)
Dim SQL As String = "SELECT * FROM [V_SelezioneXEtichette] Where ID='" & IDN.ToString() & "'"
Using conn As New SqlConnection(sConstr)
Using comm As New SqlCommand(SQL, conn)
conn.Open()
Using da As New SqlDataAdapter(comm)
dt = New DataTable("tbl")
da.Fill(dt)

End Using
End Using
GridView2.DataSource = dt
GridView2.DataBind()
Dim Etichette As ReportDocument = New ReportDocument()
Dim reportPath As String = Server.MapPath("Etichette.rpt")
Etichette.Load(reportPath)
Etichette.SetDataSource(dt)
CrystalReportViewer1.ReportSource = Etichette

End Using
End If
Next
End If
End Sub

Qualcuno mi sa dire come fare ad avere tutte le righe selezionate?

Grazie Mille
Barbara
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