Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Aiuto datagrid e c#

  1. #1

    Aiuto datagrid e c#

    Ciao a tutti...sto cercando di rendere possibile la modifica dei record visualizzati cliccando sul pulsante edit con questo codice:
    il codice conncettualmente funziona il problema sta nel fatto che il valore text della textbox non è quello che io ci digit prima di cliccare su aggiorna bensì il contenuto precedente.
    ___________visualizza.aspx______________
    <h3>Gestione Comuni</h3>

    <form runat="server">
    <aspataGrid
    id="risultati"
    DataKeyField="idComune"
    AutoGenerateColumns="False"
    OnEditCommand="setEditMode"
    OnUpdateCommand="update"
    runat="server" >

    <Columns>
    <asp:EditCommandColumn
    EditText="Edit"
    UpdateText="Aggiorna">
    </asp:EditCommandColumn>
    <asp:BoundColumn HeaderText="idComune"
    DataField="idComune"
    ReadOnly="True"
    />
    <asp:BoundColumn HeaderText="Nome"
    DataField="nome"/>
    <asp:BoundColumn HeaderText="C A P"
    DataField="cap"/>
    <asp:BoundColumn HeaderText="Provincia"
    DataField="provincia"/>

    </Columns>
    </aspataGrid>
    </form>
    ________________________________


    mentre questo è il codebehind:

    _______________visualizza.cs_________
    public void update(object sender, DataGridCommandEventArgs e) {
    System.Data.OleDb.OleDbConnection connessione = prova3.Global.getConnessione();
    System.Data.OleDb.OleDbCommand sql = new System.Data.OleDb.OleDbCommand();

    String pid = risultati.DataKeys[e.Item.ItemIndex].ToString();

    TextBox nome = (TextBox) e.Item.Cells[2].Controls[0];

    Response.Write(pid);
    Response.Write(nome.Text);

    String strNome = nome.Text;
    String strCap = "66666";
    String strProvincia = "rg";
    sql.CommandText ="UPDATE tblComuni SET nome = '" + strNome
    + "', cap = '" + strCap
    + "', provincia = '" + strProvincia
    + "' WHERE idComune = " + pid;

    sql.Connection = connessione;
    connessione.Open();
    sql.ExecuteNonQuery();
    sql.Connection.Close();
    risultati.EditItemIndex=-1;
    bindDataGrid(this,e);

    }

    }
    ______________________________

  2. #2

    Risolto così:

    ____aspx________

    <asp:Content ContentPlaceHolderId="CPH1" runat="server">
    <form id="form" runat="server" action="visualizza.aspx" AutoPostBack="true">
    <aspataGrid
    id="dataGrid1"
    AutoGenerateColumns="False"
    DataKeyField="idcomune"
    OnEditCommand="setEditMode"
    OnCancelCommand="cancelEdit"
    OnUpdateCommand="updateDataBase"
    CellPadding="2"
    Font-Name="Verdana" Font-Size="8pt"
    runat="server" >
    <HeaderStyle Font-Size="8" Font-Names="Arial"
    Font-Bold="True" BackColor="Yellow"
    HorizontalAlign="center">
    </HeaderStyle>
    <Columns>
    <asp:EditCommandColumn
    EditText="Edit"
    UpdateText="Update"
    CancelText="Cancel">
    </asp:EditCommandColumn>
    <asp:BoundColumn HeaderText="ID Comune"
    DataField="idcomune"
    ReadOnly="True"
    />
    <asp:BoundColumn HeaderText="Nome"
    DataField="nome"/>
    <asp:BoundColumn HeaderText="Cap"
    DataField="cap"/>
    <asp:BoundColumn HeaderText="Provincia"
    DataField="provincia"/>
    </Columns>
    </aspataGrid>
    </form>
    </asp:Content>



    ________________
    ____cs________
    public void bindDataGrid(){
    OleDbConnection myConn;
    OleDbDataAdapter myOleDbAdapter;
    String sqlStr;
    System.Data.DataSet myDataSet = new DataSet();


    sqlStr = "SELECT * FROM tblComuni ORDER BY idComune";
    myConn= prova3.Global.getConnessione();
    myConn.Open();
    myOleDbAdapter =new System.Data.OleDb.OleDbDataAdapter(sqlStr,myConn);
    myOleDbAdapter.Fill(myDataSet,"dttblComuni");
    dataGrid1.DataSource = myDataSet.Tables["dttblComuni"];
    dataGrid1.DataBind();
    myConn.Close();
    }


    public void setEditMode(Object source,DataGridCommandEventArgs e){
    dataGrid1.EditItemIndex= e.Item.ItemIndex;
    bindDataGrid();
    }
    public void cancelEdit(Object source,DataGridCommandEventArgs e){
    dataGrid1.EditItemIndex = -1;
    bindDataGrid();
    }
    public void updateDataBase(Object source,DataGridCommandEventArgs e){
    OleDbConnection myConn;
    String sqlStr;
    OleDbCommand myUpdateCommand;
    int intPid;

    intPid = (int)dataGrid1.DataKeys[e.Item.ItemIndex];
    //strPName = (CType(e.Item.Cells(2).Controls(0), Textbox)).Text
    String strNome = ((TextBox) e.Item.Cells[2].Controls[0]).Text;
    //dblPrice=cDbl((CType(e.Item.Cells(3).Controls(0), Textbox)).Tex)
    String strCap = ((TextBox) e.Item.Cells[3].Controls[0]).Text;
    String strProvincia = ((TextBox) e.Item.Cells[4].Controls[0]).Text;
    sqlStr = "UPDATE tblComuni SET nome ='" + strNome + "', cap ='" + strCap+"', provincia ='"+ strProvincia+"' WHERE idcomune = " + intPid.ToString();


    myConn= prova3.Global.getConnessione();
    myConn.Open();
    myUpdateCommand = new OleDbCommand(sqlStr, myConn);
    myUpdateCommand.ExecuteNonQuery();
    myConn.Close();
    dataGrid1.EditItemIndex=-1;
    bindDataGrid();
    }

    ___________

  3. #3
    Aiuto non mi funziona di nuovo...assurdo stesso codice...non so cosa diavolo suceda ma quando do l'update anzichè i dati presenti nelle textbox mi tiene i dati precedenti..cioè quelli prima dell'editazione.

  4. #4
    Risolto di nuovo mi era sfuggito un bindDataGrid nel caso di postback...che quindi mi azzerava le modifiche

    if(IsPostBack){}else{bindDataGrid();}

    così funzione

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.