mi spiace ancora non ho avuto tempo di controllare tutto il codice, vedo di dargli un occhiata adesso

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
potresti postare anche il codice della sub Carica

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
59 messaggi dal 17 gennaio 2008
Grazie!!!!

Ti posto il carica di un'altra pagina .. ke è generico, semplice, l'altro ha dei ragionamenti all'interno un pò così!


#Region " Cerca Click"
    Protected Sub cmd_cerca_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmd_cerca.Click
        If Page.IsPostBack Then
            CaricaUtenti()
        End If
    End Sub
#End Region

#Region " Carica Dati"

    Private Sub CaricaUtenti()
        Try
            Dim param As String() = New String(7) {}

            param(0) = "" 'IdUtente
            param(1) = "" 'direzione
            param(2) = "" 'campo da ordinare
            param(3) = txt_cognome.Text
            param(4) = txt_nome.Text
            param(5) = cmb_affare.SelectedValue
            param(6) = cmb_TipoUtente.SelectedValue
            param(7) = cmb_DivisioneUtente.SelectedValue


            Dim ds As DataSet = DB.execQuery("sp_Utente_select", param)
            gv_utenti.Visible = True
            'ricarico il dataview e il datagrid
            dv = ds.Tables("Table").DefaultView
            dv.Sort = gv_utenti.SortExpression
            gv_utenti.DataSource = dv
            gv_utenti.DataBind()
            If gv_utenti.Rows.Count = 0 Then
                gv_utenti.Visible = False
                lbl_norecord.Visible = True
                lbl_norecord.Text = " Nessun Utente Trovato!"

            Else
                gv_utenti.Visible = True
                lbl_norecord.Visible = False
                lbl_norecord.Text = ""
            End If
        Catch ex As Exception
            Dim strErr As String = ""
            strErr = "Errore nel carimento dati - Ricerca Utente.aspx"
            Funzioni.redirectPageError(strErr, "")
            strErr = strErr & " - CaricaUtente -" & ex.ToString()
            Log.scriviLog(strErr)
        End Try
    End Sub

#End Region



Modificato da Moldavia il 04 settembre 2008 10.21 -
ci sono cose che non mi sono chiare, tipo il fatto che nella pagina precedente la funzione Carica acetta un parametro qulla che hai postato si chiama CaricaUtenti e non accetta paramentri, poi se ho letto bene si fa riferimento a due GridView differenti

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
59 messaggi dal 17 gennaio 2008

#Region " Carica "
    Public Sub Carica(ByVal strIdUtente As Integer)
        Try
            Dim strSql As String = ""
            ' *********************************************************************************
            ' Carico nel ds tutti i permessi presenti nella tabella Permessi
            ' *********************************************************************************
            strSql = "SELECT IdPermesso, Modulo, NomePermesso, Descrizione FROM Permessi"
            ds = DB.execQuery(strSql)

            ' *********************************************************************************
            ' Verifico se nella tab PermessiUtenti ho già assegnato in passato qualche 
            ' permesso x l'utente che si sta loggando 
            ' *********************************************************************************
            strSql = ""
            strSql = "SELECT IdPermesso, IdUtente, Abilitato FROM PermessiUtenti WHERE PermessiUtenti.IdUtente =" & strIdUtente

            ds2 = DB.execQuery(strSql)

            If ds2.Tables("Table").Rows.Count = 0 Then
                ' *********************************************************************************
                ' se non trovo dei permessi assegnati x l'utente loggato, inserisco massivamente 
                ' tutti i permessi con valore false
                ' *********************************************************************************
                For i As Integer = 0 To ds.Tables("Table").Rows.Count - 1
                    strSql = ""
                    strSql = "INSERT INTO PermessiUtenti (IdUtente,Abilitato,IdPermesso) VALUES(" & strIdUtente & ", 0," & ds.Tables("Table").Rows(i)(0) & ") "
                    ds3 = DB.execQuery(strSql)
                Next
                ds3.Dispose()
                ds3 = Nothing
            Else<
                ' *********************************************************************************
                ' se trovo dei permessi assegnati x l'utente loggato, controllo che i record 
                ' presenti siano uguali al numero di permessi esistenti, se sono diversi vado ad 
                ' inserire solo quelli mancanti con valore false
                ' *********************************************************************************
                Dim Trovato As String = "no"
                Dim IdPermesso As Integer
                ' *********************************************************************************
                ' controllo che il numero di permessi dell'utente in modifica (Tab: PermessiUtenti) 
                ' sia uguale al numero dei permessi totali(Tab: Permessi)
                ' *********************************************************************************
                If ds2.Tables("Table").Rows.Count <> ds.Tables("Table").Rows.Count Then
                    ' *********************************************************************************
                    ' inizio a ciclare x il numero tot di permessi
                    ' *********************************************************************************
                    For jj As Integer = 0 To ds.Tables("Table").Rows.Count - 1
                        ' *********************************************************************************
                        ' controllo che i permessi nn siano già stati inseriti 
                        ' se Trovato = "si" vuol dire che il permesso (jj)(0) è già presente in PermessiUtenti
                        ' *********************************************************************************
                        For i As Integer = 0 To ds2.Tables("Table").Rows.Count - 1
                            If ds.Tables("Table").Rows(jj)(0) = ds2.Tables("Table").Rows(i)(0) Then
                                Trovato = "si"
                                Exit For
                            Else
                                Trovato = "no"
                                IdPermesso = ds.Tables("Table").Rows(jj)(0)
                            End If
                        Next
                        ' *********************************************************************************
                        ' se Trovato = "no" vuol dire che il permesso (jj)(0) NON è presente in PermessiUtenti
                        ' *********************************************************************************
                        If Trovato = "no" Then
                            strSql = ""
                            strSql = "INSERT INTO PermessiUtenti (IdUtente,Abilitato,IdPermesso) VALUES(" & strIdUtente & ", 0," & IdPermesso & ") "
                            ds4 = DB.execQuery(strSql)
                            ds4.Dispose()
                        End If
                    Next
                End If
            End If

            ds.Dispose()

            strSql = ""
            strSql += " SELECT Permessi.Modulo, Permessi.NomePermesso, Permessi.Descrizione, "
            strSql += " PermessiUtenti.abilitato, PermessiUtenti.IdUtente, PermessiUtenti.IdPermesso "
            strSql += " FROM Permessi "
            strSql += " INNER JOIN PermessiUtenti "
            strSql += " ON Permessi.IdPermesso = PermessiUtenti.IdPermesso"
            strSql += " WHERE PermessiUtenti.IdUtente = " & strIdUtente
            strSql += " ORDER BY Modulo, NomePermesso"

            ds = DB.execQuery(strSql)

            gv_PermessiUtenti.Visible = True
            'ricarico il dataview e il datagrid
            dv = ds.Tables("Table").DefaultView
            dv.Sort = gv_PermessiUtenti.SortExpression
            gv_PermessiUtenti.DataSource = dv
            gv_PermessiUtenti.DataBind()
            If gv_PermessiUtenti.Rows.Count = 0 Then
                gv_PermessiUtenti.Visible = False
            Else
                gv_PermessiUtenti.Visible = True
            End If

            ds.Dispose()
            ds2.Dispose()
            ds = Nothing
            ds2 = Nothing
            ds4 = Nothing

        Catch ex As Exception
            Dim strErr As String = ""
            strErr = "Errore nel carimento dati - Permessi Utente.aspx"
            Funzioni.redirectPageError(strErr, "")
            strErr = strErr & " - Carica -" & ex.ToString()
            Log.scriviLog(strErr)
        End Try
    End Sub
#End Region


troppa grazia non immaginavo questo "fiume" di codice, gli do un occhiata e se non ne vengo a capo ti posto magari un esempio pià semplice funzionante.

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
ciao spero non sia troppo tardi ma volevo risponderti prima che sparisca a causa matrimonio

ecco un esempio funzionante

<%@ Page Language="C#"  Trace="true"%>

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

<script runat="server">
    private bool _loadComplete = false;
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        if (!IsPostBack)
        {
            BindGrid();
        }
    }

    protected override void OnLoadComplete(EventArgs e)
    {
        base.OnLoadComplete(e);
        _loadComplete = true;
    }
    private void BindGrid()
    {
        string _connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
        System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter("SELECT [CompanyName], [ContactName], [Address], [PostalCode], [CustomerID] FROM [Customers]", _connectionString);

        System.Data.DataSet ds = new System.Data.DataSet();
        da.Fill(ds);

        GridView1.DataSource = ds;
        GridView1.DataBind();
    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        BindGrid(); 
    }

    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {  
        if (e.Row.RowType == DataControlRowType.DataRow & _loadComplete)
        {
            Response.Write(GridView1.DataKeys[e.Row.DataItemIndex][0]);
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:GridView ID="GridView1" runat="server" DataKeyNames="CustomerID" 
            PageSize="10" AllowPaging="true" 
            onpageindexchanging="GridView1_PageIndexChanging" 
            onrowcreated="GridView1_RowCreated">
        </asp:GridView>
    
    </div>
    </form>
</body>
</html>



in pratica l'errore si verificava perche la prima volta le righe sono create utilizzando i dati presenti nel ViewState e solo dopo con i nuovi dati.

allora per ovviare ho eseguito l'ovveride del metodo OnLoadComplete li imposto un campo di tipo bool per memorizzare che la griglia è stata correttamente ricreata.

nel event handler GridView1_RowCreated oltre che a controllare il tipo di riga controllo anche questo campo

ciao e buon lavoro

marco

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

http://nostromo.spaces.live.com/default.aspx
59 messaggi dal 17 gennaio 2008

GRAZIEEEEEEEEEE!!!!!

Funziona tutto!!!

Bhè tanti auguri x il tuo matrimonio!!!

Ciao ciao
Alessia

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.