Domanda

1) Qual è la sintassi per una query di aggiornamento per una tabella senza una chiave primaria in vb.net per una gridview con una casella di controllo?

Disclaimer: frustrantemente, l'aggiunta di una chiave primaria non è un'opzione. Il mio programma è un piccolo programma in un sistema molto più ampio con scarsa gestione dei dati. Il mio tempo di sviluppo non include la riscrittura dell'altro software.

Ecco le colonne per la tabella in cui AgentLeads è il database e mktdtalads_scrubbated è la tabella:

FROM [AgentLeads].[dbo].[MktDtaLeads_Scrubbed] - [Last Name] ,[First Name],
     [Middle Name] ,[Suffix] ,[Address Line 1] ,[Address Line 2] ,[City] ,[ST],
     [ZipCode] ,[Email Address] ,[Phone Nbr] ,[Toll Free Nbr] ,[InsertDate] ,
     [SentDate] ,[DoNotMail] 

Il codice che ho in questo momento non visualizza errori ma non aggiorna il campo Donotmail quando si verifica la casella di controllo anche se visualizza il testo "Il valore Donotmail è stato modificato nel database per il campo selezionato".

Per il codice default.aspx.vb dietro ho aggiunto:

Public Sub gridview1_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)


     If e.CommandName = "UpdateDoNotMail" Then

        With Me.SqlDataSource1
           Dim box As CheckBox = DirectCast(sender, CheckBox)


           If box.Checked = True Then

               donotmail.SelectedValue = 1


               .ConnectionString = ConfigurationManager.AppSettings("AgentLeadsConnectionString").ToString

               .UpdateCommand = "UPDATE MktDataLeads_scrubbed set donotmail=@donotmail 
               WHERE [last name]=@lastname.selectedrow AND [first name]=@firstname.selectedrow AND [Address Line 1]=@Address Line 1.selectedrow" 

           Else
               donotmail.SelectedValue = 0


               .ConnectionString = ConfigurationManager.AppSettings("AgentLeadsConnectionString").ToString


               .UpdateCommand = "UPDATE MktDataLeads_scrubbed set donotmail=@donotmail
               WHERE [last name]=@lastname.selectedrow AND [first name]=@firstname.selectedrow AND [Address Line 1]=@Address Line 1.selectedrow"

           End If
       End With

    End If
End Sub

Ecco il codice per GridView su default.aspx:

        <asp:GridView ID="GridView2" runat="server" CellPadding="2" 
            DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" 
            AutoGenerateColumns="False">
            <Columns>
                <asp:BoundField DataField="Last Name" HeaderText="Last Name" 
                    SortExpression="Last Name" />
                <asp:BoundField DataField="First Name" HeaderText="First Name" 
                    SortExpression="First Name" />
                <asp:BoundField DataField="Address Line 1" HeaderText="Addr 1" 
                    SortExpression="Address Line 1" />
                <asp:BoundField DataField="Address Line 2" HeaderText="Addr 2" 
                    SortExpression="Address Line 2" />
                <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
                <asp:BoundField DataField="ST" HeaderText="ST" SortExpression="ST" />
                <asp:BoundField DataField="ZipCode" HeaderText="ZipCode" 
                    SortExpression="ZipCode" />
                <asp:BoundField DataField="Email Address" HeaderText="Email Addr" 
                    SortExpression="Email Address" />
                <asp:BoundField DataField="Phone Nbr" HeaderText="Phone Nbr" 
                    SortExpression="Phone Nbr" />

         <asp:TemplateField HeaderText="DoNotMail" SortExpression="DoNotMail">     
         <ItemTemplate>         
         <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" CommandName="UpdateDoNotMail" Checked='<%# Bind("DoNotMail") %>'
                       Enabled="true" />     
         </ItemTemplate>     

         <EditItemTemplate>         
         <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" CommandName="UpdateDoNotMail" Checked='<%# Bind("DoNotMail") %>' />     
         </EditItemTemplate>       
         </asp:TemplateField> 

            </Columns>

2) È possibile fare una sincronizzazione bidirezionale su tutta la griglia quando l'utente colpisce un pulsante in modo da non dover fare un aggiornamento ogni volta che una riga viene modificata? Perché l'utente potrebbe controllare la casella e quindi controllare un'altra casella, deseleziona una casella e sarebbero molti aggiornamenti ...

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top