Ciao a tutti ho un problema con ReorderList. Praticamente ho una lista di articoli che popolo con un click su un bottone che prende da delle select box dei filtri. C'è anche un bottone ordina in modo random che mette gli elementi della lista in modo random. Ed infine c'è un bottone che salva l'ordinamento. Il click sul bottone random funziona e dopo se effettuo un salvataggio mi salva correttamente.. La lista viene popolata in modo corretto sembra che funzioni tutto eccetto che per il drag and drop che mi genera questo popup: "Reorder failed see details bellow:\r\n\r\n Object reference not set to an instance of an object". Non so più come procedere. Vi allego il codice:
REORDERLIST
<ajaxToolkit:ReorderList ID="reorder_articoli" runat="server" SortOrderField="ordine"
AllowReorder="true" DataSourceID="SqlDataSource1" DataKeyField="id_articolo" CssClass="reorderlist"
>
<DragHandleTemplate>
<div style="height: 20px; width: 25px; cursor: pointer;">
<asp:Image ID="Image1" runat="server" ImageUrl="~/admin/img/drag.png" BorderWidth="0" />
</div>
</DragHandleTemplate>
<ItemTemplate>
<asp:Label ID="lb_articolo" runat="server" Text='<%#Eval("id_articolo") %>' />
</ItemTemplate>
</ajaxToolkit:ReorderList>
SQL DATA SOURCE
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:mycons %>"
ProviderName="<%$ ConnectionStrings:mycons.ProviderName %>"
UpdateCommand="UPDATE [AJAX] SET ordine=@ordine WHERE [id_articolo]=@original_id">
<UpdateParameters>
<asp:Parameter Name="ordine" Type="Int32" />
<asp:Parameter Name="original_id" Type="string" />
</UpdateParameters>
</asp:SqlDataSource>
CLICK SALVA
Protected Sub btn_salva_ordinamento_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_salva_ordinamento.Click Try
connessione = DBUtil.GetOdbcConnection
connessione.Open()
Dim mc As OdbcCommand = New OdbcCommand
mc.Connection = connessione
rows = DirectCast(Session("rows"), ArrayList)
For index As Integer = 1 To rows.Count
mc.CommandText = "UPDATE articoli set ordine = " + index.ToString + " where id_articolo = '" + rows(index - 1) + "'"
Dim r As Integer = mc.ExecuteNonQuery
Next
connessione.Close()
LogManager.InsertLogAzione("Articolo.Ordinamento", "Ordinamento articoli = Ordinamento degli articoli di " + categorie.getCategoria + " / " + categorie.getGruppo + " / " + categorie.getSottogruppo)
Catch ex As Exception
ErroreManager.LogErrore(ex)
End Try
Response.Redirect(Request.Url.ToString)
End Sub
CLICK PER ORDINAMENTO RANDOM
Protected Sub btn_random_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_random.Click Try
SqlDataSource1.SelectCommand = "SELECT id_articolo,nome, ordine from articoli where id_cat = '" + categorie.getCategoria + "' and id_gru = '" + categorie.getGruppo + "' order by rand()"
SqlDataSource1.DataBind()
reorder_articoli.DataSourceID = "SqlDataSource1"
reorder_articoli.DataBind()
For Each r As AjaxControlToolkit.ReorderListItem In reorder_articoli.Items
Dim lb_articolo As Label = DirectCast(r.FindControl("lb_articolo"), Label)
'MsgBox(lb_articolo.Text)
rows.Add(lb_articolo.Text)
Next
Session("rows") = rows
Catch ex As Exception
ErroreManager.LogErrore(ex)
End Try
End Sub
CLICK FILTRA PER VISUALIZZARE L'ELENCO
Protected Sub lkbtnFiltra_Click(sender As Object, e As EventArgs) Handles lkbtnFiltra.Click If categorie.getCategoria <> "0" And categorie.getGruppo <> "0" Then
SqlDataSource1.SelectCommand = "SELECT id_articolo,nome, ordine from articoli where id_cat = '" + categorie.getCategoria + "' and id_gru = '" + categorie.getGruppo + "' order by ordine asc"
Else
SqlDataSource1.SelectCommand = "SELECT id_articolo,nome, ordine from articoli order by ordine asc"
End If
SqlDataSource1.DataBind()
reorder_articoli.DataSourceID = "SqlDataSource1"
reorder_articoli.DataBind()
For Each r As AjaxControlToolkit.ReorderListItem In reorder_articoli.Items
Dim lb_articolo As Label = DirectCast(r.FindControl("lb_articolo"), Label)
'MsgBox(lb_articolo.Text)
rows.Add(lb_articolo.Text)
Next
Session("rows") = rows
End Sub
Vi ringrazio in anticipo
Iulia