Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Come modificare ( Filtrare ) una GridView?

    Ciao a tutti, sto sviluppando codice in asp.net.
    Mi sono connesso al mio database e viene correttamente visualizzato sul browser, ora voglio aggiungere un bottone che mi modifichi la Grid con una specifica query che decido io staticamente durante la stesura del codice, come fare? Io leggendo miliardi di esempi non sono riuscito a farlo funzionare...Posto uno dei tanti che ho provato:

    SqlConnection cs = new SqlConnection();
    cs.ConnectionString = "Data Source=localhost;Password=password;Persist Security Info=True;Integrated Security=True";
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = "SELECT * FROM Production";

    cs.Open();
    cs.Connection.Open();
    cmd.ExecuteNonQuery();

    L'errore specifico di questo esempio è che mi chiede quale tabella associare a cmd.ExecuteNonQuery() !!!

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Executenonquery è per UPDATE, DELETE, INSERT.

    codice:
        using (SqlConnection connection = new SqlConnection("tuaConnString"))
        {
            // crea l'oggetto command
            SqlCommand command = new SqlCommand();
            command.Connection = connection;
            command.CommandText = "TUA QUERY SELECT";
    
            // Apre la connessione e riempie il datareader
            try 
            {
               connection.Open();
               SqlDataReader reader = command.ExecuteReader();
               if (reader.HasRows)
               { 
                 tuaGridView.DataSource = reader;
                 tuaGridView.DataBind();
               }        
            }
            catch(Exception ex) 
            { 
              Console.Writeline(ex.message);
            }
         }
    PS: tieni ben presente che la tecnica descritta è SCONSIGLIATA. E' meglio non scrivere codice SQL nelle stringhe, ma nelle Stored Procedure

  3. #3

    Non ancora risolto

    Ciao, ho messo questo codice in button click event :

    using (SqlConnection connection = new SqlConnection("Data Source=localhost;Password=****;Persist Security Info=True;Integrated Security=True"))
    {
    SqlCommand command = new SqlCommand();
    command.Connection = connection;
    command.CommandText = "SELECT * FROM Production WHERE Id= 718987";
    // Apre la connessione e riempie il datareader
    try
    {
    connection.Open();
    SqlDataReader reader = command.ExecuteReader();
    if (reader.HasRows)
    {
    GridView1.DataSource = reader;
    GridView1.DataBind();
    }
    }
    catch (Exception ex)
    {
    //Console.Writeline(ex.message);
    }
    }

    Console writeline mi da errore , ma non è questo il problema..La Gridview1 non cambia! Rimane nello stato di visualizzazione iniziale...

  4. #4
    ciao,
    se utilizzi ExecuteNonQuery, non avrai risultati di ritorno da dare alla griglia.
    devi utilizzare, come ti ha scritto DJciko, un datareader.

    inoltre, dove carichi la griglia inizialmente? nel page_load? o con un sqldatasource?

  5. #5
    Non uso più executenonquery , uso esattamente il codice che mi è stato consigliato..Ho postato sopra quello che ho provato.
    Io uso visualstudio 2008 ( devo utilizzare questo per motivi di progetto ) , la mia gridview la inizializzo inserendola visualmente nella pagina e configurandola con il datasource, la definizione del providername ecc..
    Uff...Non ci salto fuori...

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    probabilmente dopo il bind con il datareader viene ri-effettuato il bind che hai scolpito nella pagina, quindi la vedi uguale all'inizio.

    comunque, non riesco a capire come mai vuoi visualizzare una Grid con un record solo

  7. #7
    Lo faccio solo per prova, poi una volta risolto questo semplice caso farò tutti gli altri..
    Quindi come posso fare? Definire la grid iniziale al primo caricamento di pagina?

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Utilizza il codice che ti ho scritto nel Page_Load (nella if che riguarda il postback) per caricarla.

    Per modificarla, puoi farlo in vari modi.

    Uno di questi è un CommandField aggiunto come colonna alla Grid. E' il modo "inline", le labels si trasformano in textbox, ti permettono la modifica del record e di aggiornarlo sul db.

    ASPX:
    codice:
            <asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" 
                    onrowediting="gv_RowEditing" onrowupdated="gv_RowUpdated" 
                    onrowupdating="gv_RowUpdating" onrowcancelingedit="gv_RowCancelEdit">
            <Columns>
                <asp:BoundField DataField="nome" HeaderText="NOME" />
                <asp:BoundField DataField="cognome" HeaderText="COGNOME" />
                <asp:CommandField ButtonType="Link" ShowEditButton="true" />
            </Columns>
            </asp:GridView>
    .CS
    codice:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    
    public partial class GridView_Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindDati();
            }
        }
    
        protected void BindDati()
        {
            using (SqlConnection connection = new SqlConnection("Data Source=XXXXXX;Initial Catalog=XXXXX;Persist Security Info=True;User ID=XXX;Password=XXXXXX"))
            {
                // crea l'oggetto command
                SqlCommand command = new SqlCommand();
                command.Connection = connection;
                command.CommandText = "SELECT nome, cognome FROM [tb_utenti]";
    
                // Apre la connessione e riempie il datareader
                try
                {
                    connection.Open();
                    SqlDataReader reader = command.ExecuteReader();
                    if (reader.HasRows)
                    {
                        gv.DataSource = reader;
                        gv.DataBind();
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
    
        protected void gv_RowCancelEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gv.EditIndex = -1;
            BindDati();
        }
    
    
        protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gv.EditIndex = e.NewEditIndex;
            BindDati();
        }
    
    
        protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow row = gv.Rows[e.RowIndex];
            string nuovoNome = ((TextBox)(row.Cells[0].Controls[0])).Text;
            string nuovoCognome = ((TextBox)(row.Cells[1].Controls[0])).Text;
    
            // FAI L'UPDATE SUL DB CON I NUOVI DATI
        }
    
    
        protected void gv_RowUpdated(object sender, GridViewUpdatedEventArgs e)
        {
            //
        }
    }

  9. #9
    Mettendo un breakpoint posso dire che il try fallisce e va in catch...per quello non funziona..Idee?

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.