none
CheckBox per la selezione/deselezione di massa RRS feed

  • Domanda

  • Ciao a tutti.

    In una mia applicazione la quale legge dei dati estrapolati dal Db, ho una serie di CheckBox (quindi serie di true/false) che vanno a modificare il campo di tipo bool del db.

    Tutte le info le recupero semplicemente con un datalist dove tra l'altro ho anche la possibilità di modificare il record. Quello che vorrei fare è dare la possibilità all'amministratore del sito di poter rendere a true o false tutti i campi presenti nel Db in un unica azione attraverso appunto il checkBox....Attendo impaziente i vostri preziosi suggerimenti!

     

    grazie...


    Ricardo Bagnati - www.vicenzasoftware.com
    giovedì 7 ottobre 2010 07:44

Risposte

  • Potresti utilizzare jquery e aggiungendo per esempio una checkbox tipo

     

    <asp:CheckBox ID="chkAll" runat="server" Text="Check All" />
    
    ti basterebbe aggiungere il seguente script:

     

     

    <script type="text/javascript">
     $(document).ready(function() {
       $('#chkAll').click(function() {
         $("INPUT[type='checkbox']").attr('checked', $('#chkAll').is(':checked'));
        });
      });
    </script>
    
    

     

    Per selezionare e deselezionare tutte le checkbox presenti sulla pagina.

    Ricorda di aggiungere la reference a jquery nel tag head p.es:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    
    

    Ciao
    LCO (congiuluc)
    giovedì 7 ottobre 2010 08:09
    Moderatore
  • ciao Ricardo, non è altro che un errore della stringa di conessione.

    Controlla le impostazioni della database nel proggetto(in particolare vedi in debug se il percorso DB e raggiungibile usando Server.MapPath() ed è quello correto )

    Il codice di seguito:

    using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test\newsletter.mdb"))

    {

        //Creo La connessione verso il DB

        OleDbCommand cmd = new OleDbCommand("UPDATE [Iscritti] SET [Attivo]=true", conn);

     

        conn.Open();

        cmd.ExecuteNonQuery();

        conn.Close();

     

    }

     

    funziona senza dare quel errore.

    Se comunque ti ritrovi in difficoltà il problema puo essere una di Acces:

    Guarda i seguenti collegamenti:

        Access XP/2003: KB #283881 
        Access 2K: KB #209805 
        Access 97: KB #90111

    Saluti, Daniel.

     


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.
    • Contrassegnato come risposta Ricardo78 giovedì 11 novembre 2010 08:12
    mercoledì 10 novembre 2010 14:36

Tutte le risposte

  • Se l'operazione di cambio del flag avviene a seguito della pressione di un tasto di conferma, la selezione/deselezione delle checkbox devi eseguirla tramite Javascript.

    giovedì 7 ottobre 2010 08:09
  • Potresti utilizzare jquery e aggiungendo per esempio una checkbox tipo

     

    <asp:CheckBox ID="chkAll" runat="server" Text="Check All" />
    
    ti basterebbe aggiungere il seguente script:

     

     

    <script type="text/javascript">
     $(document).ready(function() {
       $('#chkAll').click(function() {
         $("INPUT[type='checkbox']").attr('checked', $('#chkAll').is(':checked'));
        });
      });
    </script>
    
    

     

    Per selezionare e deselezionare tutte le checkbox presenti sulla pagina.

    Ricorda di aggiungere la reference a jquery nel tag head p.es:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    
    

    Ciao
    LCO (congiuluc)
    giovedì 7 ottobre 2010 08:09
    Moderatore
  • grazie per le risposte, ma mi rendo conto di essermi spiegato male, in realta vorrei inserire una checkbox che alla pressione del pulsante vada a modificare quel campo bool su tutte le righe del Db...pensavo a questo punto di metterlo fuori dal datalist (avrebbe piu senso)
    Ricardo Bagnati - www.vicenzasoftware.com
    giovedì 7 ottobre 2010 08:45
  • Puoi metterla fuori della datalist oppure, se non lo utilizzi, nel Footer.

    giovedì 7 ottobre 2010 08:54
  • Puoi metterla fuori della datalist oppure, se non lo utilizzi, nel Footer.


    La metterei quasi quasi fuori dal datalist... come dovrei procedere?

    thanks...


    Ricardo Bagnati - www.vicenzasoftware.com
    giovedì 7 ottobre 2010 09:51
  • Mi sono dimenticato di specificare che il CheckBox si trova si nel datalist ma dentro l'EditItemTemplate, quindi è visibile solo in modalità edit.

    Per via di questo aspetto, volevo mettere la checkBox di selezione/deselezione di massa, fuori dal datalist e associarlo ad un button per la modifica nel Db.

     

    La proposta di implementare Jquery è sicuramente interessante se avessi le checkBox tutte li, nella pagina (che nel mio caso non è cosi) quindi a questo punto non saprei come fare...

     

    avete qualche suggerimento?

     

    grazie a tutti!


    Ricardo Bagnati - www.vicenzasoftware.com
    venerdì 22 ottobre 2010 05:08
  • Ciao Ricardo,

    potresti postare il codice markup del DataList e quello degli eventuali suoi eventi che gestisci dal code behind (compreso l'aggancio dei dati) ?

    Saluti, Daniel.


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.
    venerdì 22 ottobre 2010 09:56
  • Io farei così:

    metteri a true la proprietà di autopostback del checkbox, poi lato server al reload della pagina controlli se il tuo "checkbox di massa" è spuntato e se lo è agisci di conseguenza

    venerdì 22 ottobre 2010 11:11
  • Ciao Ricardo,

    potresti postare il codice markup del DataList e quello degli eventuali suoi eventi che gestisci dal code behind (compreso l'aggancio dei dati) ?

    Saluti, Daniel.


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.


    Ciao daniel, scusa innanzitutto per l'enorme ritardo... comunque si ecco tutto il codice:

    Nel file .cs:

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!this.IsPostBack)

            textToday.Text = DateTime.Now.ToString();

    }

     

    public void AddIscritti(object sender, EventArgs e)

    {

        pnlIscritti.Visible = true;

    }

     

     

    protected void btnInvia_Click(object sender, EventArgs e)

    {

        DbIscritti.Insert();

        msgIns.Visible = true;

     

        txtNome.Text = "";

        txtCognome.Text = "";

        txtMail.Text = "";

    }

     

     

    public void annulla(object sender, EventArgs e)

    {

        pnlIscritti.Visible = false;

    }

     

     

    public void Azzera(object sender, EventArgs e)

    {

        txtNome.Text = "";

        txtCognome.Text = "";

        txtMail.Text = "";

    }

     

    protected void Cancella(object sender, EventArgs e)

    {

        LinkButton b = (LinkButton)sender;

        DbNewsletter.DeleteCommand = string.Format("DELETE FROM [iscritti] WHERE [id] = {0}", b.CommandArgument);

        DbNewsletter.Delete();

     

     

        Canc.Visible = true;

        Modif.Visible = false;

    }

     

    protected void elenco_EditCommand(object source, DataListCommandEventArgs e)

    {

        elenco.EditItemIndex = e.Item.ItemIndex;

        elenco.DataBind();

     

        Modif.Visible = false;

        Canc.Visible = false;

    }

     

    protected void elenco_CancelCommand(object source, DataListCommandEventArgs e)

    {

        elenco.EditItemIndex = -1;

        elenco.DataBind();

    }

     

    protected void elenco_UpdateCommand(object source, DataListCommandEventArgs e)

    {

        string id = elenco.DataKeys[e.Item.ItemIndex].ToString();

        string Data = ((TextBox)e.Item.FindControl("txtData")).Text;

        string Nome = ((TextBox)e.Item.FindControl("Nome")).Text;

        string Cognome = ((TextBox)e.Item.FindControl("Cognome")).Text;

        string Mail = ((TextBox)e.Item.FindControl("Mail")).Text;

        Boolean Check = ((CheckBox)e.Item.FindControl("Attivo2")).Checked;

     

     

        DbNewsletter.UpdateParameters["original_id"].DefaultValue = id;

        DbNewsletter.UpdateParameters["Data"].DefaultValue = Data;

        DbNewsletter.UpdateParameters["Nome"].DefaultValue = Nome;

        DbNewsletter.UpdateParameters["Cognome"].DefaultValue = Cognome;

        DbNewsletter.UpdateParameters["Mail"].DefaultValue = Mail;

        DbNewsletter.UpdateParameters["Attivo"].DefaultValue = Check.ToString();

     

        DbNewsletter.Update();

     

        elenco.EditItemIndex = -1;

        elenco.DataBind();

     

        Modif.Visible = true;

        Canc.Visible = false;

    }

    Nella pagina .aspx:

    [...]
    Grazie mille Daniel!
    Ricardo Bagnati - www.vicenzasoftware.com
    domenica 31 ottobre 2010 08:52
  • scusa, c'è stato un casino con il post precedente, non riesco piu a rieditarlo... la prima parte è ok. La seconda, quella che riguarda la pagina aspx provo a ripostarla qui:

    <h1>Elenco iscritti alle newsletter:</h1>
    <br />
    <br />
    
    <asp:Button ID="addIscritti" runat="server" OnClick="AddIscritti" Text="Effettua una nuova iscrizione" />
    <br />
    
    <asp:Panel ID="pnlIscritti" runat="server" Visible="false">
    
    <asp:AccessDataSource ID="DbIscritti" runat="server" DataFile="~/app_data/newsletter.mdb" InsertCommand="INSERT INTO [Iscritti] ([Data],[Nome],[Cognome],[Mail],[Attivo]) VALUES(?,?,?,?,?) ">
        <InsertParameters>
          <asp:ControlParameter ControlID="textToday" Name="data" Type="string" />
          <asp:ControlParameter ControlID="txtNome" Name="nome" Type="string" /> 
          <asp:ControlParameter ControlID="txtCognome" Name="cognome" Type="string" />
          <asp:ControlParameter ControlID="txtMail" Name="Mail" Type="String" /> 
          <asp:ControlParameter ControlID="Vis" Name="Attivo" Type="Boolean" />
        </InsertParameters>
    </asp:AccessDataSource>
    
    <asp:Label ID="msgIns" runat="server" Text="Nuovo iscritto aggiunto correttamente" Visible="false"></asp:Label>
    <br />
    
    <asp:TextBox ID="textToday" runat="server" Visible="false"></asp:TextBox>
    
    
    <asp:RequiredFieldValidator ID="fild1" Display="Dynamic" ControlToValidate="txtNome" ValidationGroup="Dati" ErrorMessage="Devi inserire un nome" runat="server"></asp:RequiredFieldValidator> 
    &nbsp;&nbsp;
    
    Nome: <asp:TextBox ID="txtNome" runat="server" CssClass="txt" Columns="40"></asp:TextBox> 
    <br />
    
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" Display="dynamic" ControlToValidate="txtCognome" ValidationGroup="Dati" ErrorMessage="Devi inserire un Cognome" runat="server"></asp:RequiredFieldValidator> 
    &nbsp;&nbsp;
    
    Cognome: <asp:TextBox ID="txtCognome" runat="server" CssClass="txt" Columns="36"></asp:TextBox> 
    <br />
    
    
    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" Display="dynamic" ControlToValidate="txtMail" ValidationGroup="Dati" ErrorMessage="Devi inserire un'e-mail valida" runat="server"></asp:RequiredFieldValidator> 
    &nbsp;&nbsp;
    
    e-mail: <asp:TextBox ID="txtMail" runat="server" Columns="40" CssClass="txt"></asp:TextBox>
    <br />
    <br />
    
    
    <asp:CheckBox ID="Vis" runat="server" Checked="true" Visible="true" /> Utente attivo.
    <br />
    <br />
    
    <asp:Button ID="btnInvia" runat="server" Text="Iscrivimi" CausesValidation="true" ValidationGroup="Dati" OnClick="btnInvia_Click" />
    &nbsp;
    
    <asp:Button ID="btnAnnulla" runat="server" Text="Annulla Operazione" OnClick="annulla" />
    &nbsp;
    
    <asp:Button ID="cancCampi" runat="server" Text="Azzera i campi" OnClick="Azzera" />
    <br />
    <br />
    
    <asp:HyperLink ID="aggiorna" runat="server" NavigateUrl="~/admin/Elenco.aspx" >Aggiorna la pagina per visualizzare gli iscritti aggiunti manualmente</asp:HyperLink></asp:Panel>
    
    <asp:AccessDataSource ID="DbNewsletter" runat="server" DataFile="~/app_data/newsletter.mdb" SelectCommand="SELECT * FROM iscritti ORDER BY cognome" UpdateCommand="UPDATE [iscritti] SET [data] = @data, [nome] = @nome, [cognome] = @cognome, [mail] = @mail, [Attivo] = @Attivo WHERE [id] = @original_id" InsertCommand="INSERT INTO [contatti] ([Data], [Nome], [Cognome], [Mail], [Attivo]) VALUES(?,?,?,?,?) ">
        <InsertParameters>
          <asp:ControlParameter ControlID="textToday" Name="Data" Type="string" />
          <asp:ControlParameter ControlID="txtNome" Name="Nome" Type="string" /> 
          <asp:ControlParameter ControlID="txtCognome" Name="Cognome" Type="string" />
          <asp:ControlParameter ControlID="txtTo" Name="Mail" Type="String" /> 
          <asp:ControlParameter ControlID="Vis" Name="Attivo" Type="Boolean" />
        </InsertParameters>
        <UpdateParameters>
        <asp:Parameter Name="data" Type="String" />
        <asp:Parameter Name="Nome" Type="String" />
        <asp:Parameter Name="Cognome" Type="String" />
        <asp:Parameter Name="Mail" Type="string" />
        <asp:Parameter Name="Attivo" Type="Boolean" />
        <asp:Parameter Name="original_id" Type="Int32" />   
      </UpdateParameters>
    </asp:AccessDataSource>
    
    
    <b><asp:Literal runat="server" ID="Canc" Visible="false">Iscritto cancellato correttamente</asp:Literal>
     <asp:Literal runat="server" ID="Modif" Visible="false">Iscritto aggiornato correttamente</asp:Literal>
    </b>
    
    
    
    <asp:DataList ID="elenco" DataKeyField="id" OnEditCommand="elenco_EditCommand" OnCancelCommand="elenco_CancelCommand"
      OnUpdateCommand="elenco_UpdateCommand" runat="server" BorderColor="Blue" BorderWidth="0px"
        DataSourceID="DbNewsletter" RepeatColumns="3" ShowFooter="False" CellPadding="1"
        GridLines="Both" ShowHeader="False" RepeatDirection="Horizontal">
        
        <AlternatingItemStyle BackColor="WhiteSmoke" Font-Bold="False" Font-Italic="False"
        Font-Names="Verdana" Font-Overline="False" Font-Size="8pt" Font-Strikeout="False"
        Font-Underline="False" ForeColor="Black" HorizontalAlign="Left" />
        
        <ItemStyle BackColor="White" Font-Bold="False" Font-Italic="False" Font-Names="Verdana"
          Font-Overline="False" Font-Size="8pt" Font-Strikeout="False" Font-Underline="False"
          ForeColor="#000099" HorizontalAlign="Left" />
          
        <HeaderStyle BackColor="White" Font-Bold="True" Font-Italic="False" Font-Names="Verdana"
          Font-Overline="False" Font-Size="8pt" Font-Strikeout="False" Font-Underline="True"
          ForeColor="#FFFFCC" HorizontalAlign="Center" />
          
        <EditItemStyle BackColor="WhiteSmoke" Font-Bold="False" Font-Names="Verdana"
          Font-Size="8pt" ForeColor="Black" HorizontalAlign="Center" />  
    
          
        <ItemTemplate>
        
        <table>
        <tr>
         <td>
    
         <span style="font-weight: bold;">
         N.:</span> <%#Eval ("id") %> 
         &nbsp;&nbsp;
         
         <span style="font-weight: bold;">
         Iscritto il:</span>&nbsp; <%#Eval ("Data") %>
         <br />
           
         <span style="font-weight: bold;">
         Nome:</span>&nbsp;<span class="testo"> <%#Eval ("Nome") %> </span>
         <br />
              
         <span style="font-weight: bold;">
         Cognome:</span>&nbsp; <%#Eval ("Cognome") %>
         <br />     
         <span style="font-weight: bold;">
         Mail:</span>&nbsp; <%#Eval ("Mail") %>
         <br /> 
         <span style="font-weight: bold;">    
         Attivo:</span>&nbsp; <%#Eval ("Attivo") %>
         <!-- <asp:CheckBox ID="Visibile" runat="server" AutoPostBack="true" Checked="true" />   -->
    
         <br />
         <br />
          
         <asp:LinkButton runat="server" ID="Cancel" OnClick="Cancella" Text="Cancella" CommandArgument='<%# Eval("id") %>' />
         &nbsp;
         <asp:LinkButton runat="server" ID="Edit" CommandName="edit">Modifica</asp:LinkButton>
         <br />
         <hr />
         </td>
         </tr>
         </table>
    
        </ItemTemplate>
        
        <EditItemTemplate>
        <p align="left">
        ID: <asp:Label ID="LabelID" runat="server" Text='<%# Eval("id") %>'></asp:Label>
        <br />
        Data: <asp:TextBox ID="txtData" runat="server" Text='<%# Eval ("data") %>'></asp:TextBox>
        <br />
        Nome: <asp:TextBox ID="Nome" runat="server" Columns="30" Text='<%# Eval ("Nome") %>'></asp:TextBox>
        <br />
        Cognome: <asp:TextBox ID="Cognome" runat="server" Columns="30" Text='<%# Eval ("Cognome") %>'></asp:TextBox>
        <br />
        Mail: <asp:TextBox ID="Mail" runat="server" Columns="30" Text='<%# Eval ("Mail") %>'></asp:TextBox>
        <br />
        
        <span style="font-weight: bold;">    
         Attivo:</span>&nbsp; <%#Eval ("Attivo") %> 
        <br />
    
    <asp:CheckBox ID="Attivo2" Checked="true" runat="server" /> Attivo/Disattivo
    
         
        </p>
        <asp:LinkButton ID="Btn_Update" runat="server" CommandName="update">Salva</asp:LinkButton>
        &nbsp;
        <asp:LinkButton ID="Btn_Cancel" runat="server" CommandName="cancel">Annulla</asp:LinkButton>
        
        </EditItemTemplate>
       
      </asp:DataList>
    

    Ricardo Bagnati - www.vicenzasoftware.com
    domenica 31 ottobre 2010 09:04
  • Ciao Ricardo,

    to metto di seguito come lo farei io:

    Aggiungerei la casella di controllo subito di seguito alla DataList su lacuale voglio che agisca, come di seguito:

    <div>

    [...]

    <asp:DataList ID="elenco"

    [...]

    </asp:DataList>

    <asp:Label ID="Label2" runat="server" Text="Seleziona Tutti"></asp:Label>

    <asp:CheckBox ID="CheckBox2" runat="server" OnCheckedChanged="SelezionaTutti" />

    </div>

    Nota che li ho aggiunto un gestore sul evento OnCheckedChanged che l’ho chiamato “SelezionaTutti” :

    protected void SelezionaTutti()

    {

        Boolean stato = this.CheckBox1.Checked;

        foreach(Control c in this.elenco.Controls() )

        {

            if (c is CheckBox) ((CheckBox)c).Checked = !stato;

        }

    }

    Provo descriverti come l’ho pensato io: mi creo una variabile che legga il stato attuale della casella di controllo(selezionato oppure no) prendo i controlli di tipo CheckBox del DataList elenco e imposto il contrario della selezione, quindi se ho la casella “checked” assumo che voglio cambiare e vice versa.

    Per far vedere/nascondere i due controlli aggiunti(cioè Label2 e CheckBox2) potresti usare lato codice l'evento che ti rende visibile il modo Edit del datalist.

    Purtroppo non avendo il database da provare non ti posso garantire il funzionamento.  

    Spero che comunque ti possa aiutare.

    Saluti, Daniel.


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.
    lunedì 1 novembre 2010 09:42
  • Ciao Daniel, purtroppo lo script presenta 2 errori, il primo riguarda:

    <strong>Boolean stato = this.CheckBox1.Checked;</strong>
    
    
    

    questo è l'errore:

    Error	37	'admin_Elenco' does not contain a definition for 'Attivo2' and no extension method 'Attivo2' accepting a first argument of type 'admin_Elenco' could be found (are you missing a using directive or an assembly reference?)	
    

    Dato sicuramente perchè non trova il controllo "Attivo2" che infatti è dentro al datalist, ho provato a fare un itemFind.Control ma non ci sono riuscito (forse sbaglio modo, anzi, quasi sicuramente)

     

    L'altro errore è:

    Error	38	Non-invocable member 'System.Web.UI.Control.Controls' cannot be used like a method.	
    
    
    Error	39	'System.Web.UI.WebControls.BaseDataList.Controls' is a 'property' but is used like a 'method'	
    

     che è dovuto a questa sezione:

     <strong>foreach(Control c in this.elenco.Controls() )</strong>
    
    
    
    Forse nello script manca qualcosa? mi dirai se è cosi...

     

    ciao e grazie mille intanto!


    Ricardo Bagnati - www.vicenzasoftware.com
    mercoledì 3 novembre 2010 19:02
  • Ciao Ricardo,

    una curiosità, togliendo le modifiche proposte il progetto è funzionante?

    Lo dico perché nel caso della 37 non saprei cosa dirti, non capisco da dove si è preso l'oggetto 'admin_Elenco' ... dal codice che hai postato prima il DataList  che contiene la casella 'Attivo2' si chiamava 'elenco' : < asp : DataList ID = "elenco" ... < asp : CheckBox ID = "Attivo2" ...

    Per 38 e 39 come detto non ho testato il codice e il compilatore ha sempre ragione, infatti Controls è una collezione di oggetti Control non un metodo quindi si deve usare senza parametri, cioè senza le tonde: foreach (Control c in this .elenco.Controls) {...}

    Concludendo, potresti zippare il progetto compreso la struttura del database e metterlo da qualche parte per poter scaricarlo?

    Saluti, Daniel.
    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.
    mercoledì 3 novembre 2010 23:10
  • Ok, allora ho messo in un file zip i file essenziali al post (altrimenti avrei dovuto mettere centinaia di pagine!) ora facendo una prova del progetto ottenuto, mi va in effetti in errore di runtime dovuto a quel admin_elenco (mentre nel progetto originario no)

     

    qui trovi il file: http://www.vicenzasoftware.com/checkbox_di_massa.zip

     

    non avevo ancora effettuato i cambiamenti di cui al punto 38 e 39 (I'm sorry) mi è venuto in mente ora (I'm sorry, too much!)

     

    grazie mille per la disponibilità...

     

    buona domenica!


    Ricardo Bagnati - www.vicenzasoftware.com
    sabato 6 novembre 2010 15:54
  • Ciao Ricardo,

    prendendo i tuoi file ho creato un nuovo progetto di test per mostrarti la funzionalità della casella esterna. Lo puoi scaricare da qui.

    Comunque, quello che hai esposto non credo sia possibile, dato il fatto che stai modificando i record uno alla volta non avrai mai tutte le caselle asieme per spuntarle. Quindi, considera riorganizzare il tuo progetto e implementarlo in un tal modo da poter modificare un insieme di dati.

    Rimango in attesa di una conferma sulla funzionalità.

    Saluti, Daniel.

     


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.
    martedì 9 novembre 2010 16:44
  • Ciao Ricardo,

    prendendo i tuoi file ho creato un nuovo progetto di test per mostrarti la funzionalità della casella esterna. Lo puoi scaricare da qui.

    Comunque, quello che hai esposto non credo sia possibile, dato il fatto che stai modificando i record uno alla volta non avrai mai tutte le caselle asieme per spuntarle. Quindi, considera riorganizzare il tuo progetto e implementarlo in un tal modo da poter modificare un insieme di dati.

    Rimango in attesa di una conferma sulla funzionalità.

    Saluti, Daniel.

     


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.


    Ciao Daniel, mille grazie per il supporto che mi dai!

     

    Tenendo in considerazione quel che mi hai detto, potrei rifare il progetto in modo da permettere la funzionalità... cosa mi consigli?

     

    grazie ancora...


    Ricardo Bagnati - www.vicenzasoftware.com
    martedì 9 novembre 2010 22:40
  • Ciao Ricardo,

    purtroppo questo esce dal scopo dei forum, nessuno qui non smanetterà il progetto per te. Temo che a questo aspetto ci dovresti pensare te.

    Comunque per darti una spunta, se il tuo scopo e di attivare tutti in un colpo solo ti basta aggiungere un pulsante e gestire  l'evento click in modo da eseguire il commando:

    UPDATE
     [iscritti] SET
     [Attivo] = true

    Poi dove lo metti e come lo fai vedere al amministratore del sito ci pensi te a trovare un modo conveniente.

    Saluti, Daniel.


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.
    martedì 9 novembre 2010 23:19
  • Ciao Ricardo,

    purtroppo questo esce dal scopo dei forum, nessuno qui non smanetterà il progetto per te. Temo che a questo aspetto ci dovresti pensare te.

    Comunque per darti una spunta, se il tuo scopo e di attivare tutti in un colpo solo ti basta aggiungere un pulsante e gestire  l'evento click in modo da eseguire il commando:

    UPDATE
    
     [iscritti] SET
    
     [Attivo] = true

    Poi dove lo metti e come lo fai vedere al amministratore del sito ci pensi te a trovare un modo conveniente.

    Saluti, Daniel.


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.


    No ma infatti non pretendo che mi venga risolta la cosa nel forum ma solo la strada, un indicazione... ci mancherebbe!

    Comunque la soluzione del button mi sembra ottima, ci provero!!

     

    grazie ancora per l'aiiuto!


    Ricardo Bagnati - www.vicenzasoftware.com
    mercoledì 10 novembre 2010 10:10
  • Ciao Daniel, sto facendo una prova su un database a parte, in base a quanto mi hai suggerito ho scritto questo codice che dovrebbe fare l'aggiornamento del campo visibile:

      protected void btnSeleziona_Click(object sender, EventArgs e)
      {
        using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=" + Server.MapPath("App_Data/DbCataloghi.mdb")))
        {
          //Creo La connessione verso il DB
          OleDbCommand cmd = new OleDbCommand("UPDATE [cataloghi] SET [visibile]=True", conn);
          
          conn.Open();
          cmd.ExecuteNonQuery();
          conn.Close();
          
        }
    
      }
    

    In fase di compilazione non ci sono errori, ma quando faccio click sul pulsante per rendere "attivi" i campi viene generato questa eccezione:

    Could not find installable ISAM. 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
    
    Exception Details: System.Data.OleDb.OleDbException: Could not find installable ISAM.
    
    Source Error: 
    
    
    Line 20:       OleDbCommand cmd = new OleDbCommand("UPDATE [cataloghi] SET [visibile]=True", conn);
    Line 21:       
    Line 22:       conn.Open();
    Line 23:       cmd.ExecuteNonQuery();
    Line 24:       conn.Close();
     
    
    

     

    Cosa vorrebbe dire?


    Ricardo Bagnati - www.vicenzasoftware.com
    mercoledì 10 novembre 2010 13:26
  • ciao Ricardo, non è altro che un errore della stringa di conessione.

    Controlla le impostazioni della database nel proggetto(in particolare vedi in debug se il percorso DB e raggiungibile usando Server.MapPath() ed è quello correto )

    Il codice di seguito:

    using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test\newsletter.mdb"))

    {

        //Creo La connessione verso il DB

        OleDbCommand cmd = new OleDbCommand("UPDATE [Iscritti] SET [Attivo]=true", conn);

     

        conn.Open();

        cmd.ExecuteNonQuery();

        conn.Close();

     

    }

     

    funziona senza dare quel errore.

    Se comunque ti ritrovi in difficoltà il problema puo essere una di Acces:

    Guarda i seguenti collegamenti:

        Access XP/2003: KB #283881 
        Access 2K: KB #209805 
        Access 97: KB #90111

    Saluti, Daniel.

     


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.
    • Contrassegnato come risposta Ricardo78 giovedì 11 novembre 2010 08:12
    mercoledì 10 novembre 2010 14:36
  • Ciao Daniel, ho risolto il problema, come mi hai fatto capire c'era un problema con il Path del Db il quale non veniva "trovato" dato che la pagina è in una sottocartella (admin) mentre il Db nella cartella app_data.

    Ho risolto cosi:

    Server.MapPath("../App_Data/DbCataloghi.mdb")))
    
    

     

    Grazie ancora per il prezioso aiuto!!

     

    Ric.


    Ricardo Bagnati - www.vicenzasoftware.com
    giovedì 11 novembre 2010 08:11