Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    detailsview e modifica della chiave primaria

    Sto gestendo una tabella (insert,delete,update) con gli oggetti gridview e detailview.
    Cliccando il record della gridview da modificare viene visualizzata la detailview coi dati modificabili. Avrei bisogno di poter modificare anche il campo del codice (che è chiave primaria della detailview)... ma non ci riesco... le ho provate tutte... avete qualche idea?

    Vi posto la pagina .aspx e la .aspx.cs


    Pagina GestioneUtenti.aspx:
    ------------------------------------------------------------------------

    <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="GestioneTipiUtenti.aspx.cs" Inherits="GestioneTabella.GestioneTipiUtenti" %>


    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    </asp:Content>

    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>Gestione Tipi Utenti

    </h2>



    <asp:ScriptManager runat='server' ID='ScriptSenzaRicarico'>
    </asp:ScriptManager>





    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="TUCodice" DataSourceID="SqlDataSource1" Width="100%" PageSize="15" onpageindexchanged="GridView1_PageIndexChanged" onrowdeleted="GridView1_RowDeleted" onselectedindexchanged="GridView1_SelectedIndexCha nged" CellPadding="3" onrowdeleting="GridView1_RowDeleting">
    <Columns>

    <asp:BoundField DataField="TUCodice" HeaderText="Codice" ReadOnly="True" SortExpression="TUCodice" />
    <asp:BoundField DataField="TUTipoUtente" HeaderText="Tipo Utente" SortExpression="TUTipoUtente" />
    <asp:BoundField DataField="TUUrlPagina" HeaderText="Url pagina" SortExpression="TUUrlPagina" />

    <asp:TemplateField ShowHeader="False" ItemStyle-HorizontalAlign="Right">
    <ItemTemplate>
    <asp:ImageButton ImageUrl="Images/modifica.gif" ID="ImageButton1" runat="server" CausesValidation="False" CommandName="Select"/><asp:Image ID="Image1" ImageUrl="Images/Separatore.gif" runat="server"/><asp:ImageButton ImageUrl="Images/cestino.gif" ID="ImageButton2" runat="server" CausesValidation="False" CommandName="Delete" OnClientClick="javascript:return confirm('Cancellare questo record?');"/>
    </ItemTemplate>
    <ItemStyle HorizontalAlign="Right"></ItemStyle>
    </asp:TemplateField>

    </Columns>

    <PagerSettings Position="TopAndBottom" />
    </asp:GridView>





    <asp:ValidationSummary ValidationGroup="Salvataggio" ID="vErrors" DisplayMode="BulletList" ShowSummary="true" runat="server" ForeColor="Red"/>






    <aspetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
    DataSourceID="SqlDataSource2" Width="100%" DataKeyNames="TUCodice"
    OnItemDeleted="DetailsView1_ItemDeleted"
    OnItemInserted="DetailsView1_ItemInserted"
    OnItemUpdated="DetailsView1_ItemUpdated" CellPadding="3" DefaultMode="Edit"
    oniteminserting="DetailsView1_ItemInserting"
    onitemupdating="DetailsView1_ItemUpdating"
    ondatabound="DetailsView1_DataBound">
    <Fields>

    <asp:TemplateField HeaderText="Codice" SortExpression="TUCodice">
    <EditItemTemplate>
    <asp:TextBox ID="TUCodice" runat="server" Text='<%# Bind("TUCodice") %>'></asp:TextBox>
    <asp:RequiredFieldValidator ID="rfvTUCodice" ValidationGroup="Salvataggio" runat="server" ControlToValidate="TUCodice" ErrorMessage="Specificare il codice!" Display="Dynamic" SetFocusOnError="true" Text="*" />
    </EditItemTemplate>
    <ItemTemplate>
    <asp:TextBox ID="TUCodice" runat="server" Text='<%# Bind("TUCodice") %>'></asp:TextBox>
    <asp:RequiredFieldValidator ID="rfvTUCodice" ValidationGroup="Salvataggio" runat="server" ControlToValidate="TUCodice" ErrorMessage="Specificare il codice!" Display="Dynamic" SetFocusOnError="true" Text="*" />
    </ItemTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Tipo Utente" SortExpression="TUTipoUtente">
    <EditItemTemplate>
    <asp:TextBox ID="TUTipoUtente" runat="server" Text='<%# Bind("TUTipoUtente") %>'></asp:TextBox>
    <asp:RequiredFieldValidator ID="rfvTUTipoUtente" ValidationGroup="Salvataggio" runat="server" ControlToValidate="TUTipoUtente" ErrorMessage="Specificare il tipo di utente!" Display="Dynamic" SetFocusOnError="true" Text="*" />
    </EditItemTemplate>
    <ItemTemplate>
    <asp:Label ID="TUTipoUtente" runat="server" Text='<%# Bind("TUTipoUtente") %>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>

    <asp:BoundField DataField="TUUrlPagina" HeaderText="Url Pagina" SortExpression="TUUrlPagina" />


    <asp:CommandField ValidationGroup="Salvataggio" ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" FooterStyle-HorizontalAlign="Right">
    </asp:CommandField>


    </Fields>
    </aspetailsView>






    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConflictDetection="CompareAllValues"
    ConnectionString="<%$ ConnectionStringsatabaseConnectionString %>"
    SelectCommand="SELECT * from TipiUtenti order by TUCodice"
    DeleteCommand="DELETE FROM [TipiUtenti] WHERE (([TUCodice] = @original_TUCodice) OR ([TUCodice] IS NULL AND @original_TUCodice IS NULL))"
    InsertCommand="INSERT INTO [TipiUtenti] ([TUCodice], [TUTipoUtente], [TUUrlPagina]) VALUES (?, ?, ?)"
    OldValuesParameterFormatString="original_{0}"
    ProviderName="<%$ ConnectionStringsatabaseConnectionString.ProviderName %>"
    UpdateCommand="UPDATE [TipiUtenti] SET [TUCodice] = @original_TUCodice, [TUTipoUtente] = @original_TUTipoUtente, [TUUrlPagina] = @original_TUUrlPagina WHERE (([TUCodice] = @original_TUCodice) OR ([TUCodice] IS NULL AND @original_TUCodice IS NULL))"
    >
    <DeleteParameters>
    <asp:Parameter Name="original_TUCodice" Type="String" />
    <asp:Parameter Name="original_TUTipoUtente" Type="String" />
    <asp:Parameter Name="original_TUTipoUtente" Type="String" />
    <asp:Parameter Name="original_TUUrlPagina" Type="String" />
    <asp:Parameter Name="original_TUUrlPagina" Type="String" />
    </DeleteParameters>
    <InsertParameters>
    <asp:Parameter Name="TUCodice" Type="String" />
    <asp:Parameter Name="TUTipoUtente" Type="String" />
    <asp:Parameter Name="TUUrlPagina" Type="String" />
    </InsertParameters>
    <UpdateParameters>
    <asp:Parameter Name="TUCodice" Type="String" />
    <asp:Parameter Name="TUTipoUtente" Type="String" />
    <asp:Parameter Name="TUUrlPagina" Type="String" />
    <asp:Parameter Name="original_TUCodice" Type="String" />
    <asp:Parameter Name="original_TUTipoUtente" Type="String" />
    <asp:Parameter Name="original_TUTipoUtente" Type="String" />
    <asp:Parameter Name="original_TUUrlPagina" Type="String" />
    <asp:Parameter Name="original_TUUrlPagina" Type="String" />
    </UpdateParameters>
    </asp:SqlDataSource>






    <asp:SqlDataSource ID="SqlDataSource2" runat="server"
    ConflictDetection="CompareAllValues"
    ConnectionString="<%$ ConnectionStringsatabaseConnectionString %>"
    DeleteCommand="DELETE FROM [TipiUtenti] WHERE (([TUCodice] = @original_TUCodice) OR ([TUCodice] IS NULL AND @original_TUCodice IS NULL))"
    InsertCommand="INSERT INTO [TipiUtenti] ([TUCodice], [TUTipoUtente], [TUUrlPagina]) VALUES (?, ?, ?)"
    OldValuesParameterFormatString="original_{0}"
    ProviderName="<%$ ConnectionStringsatabaseConnectionString.ProviderName %>"
    SelectCommand="SELECT * from TipiUtenti WHERE ([TUCodice] = ?)"
    UpdateCommand="UPDATE [TipiUtenti] SET [TUTipoUtente] = @original_TUTipoUtente, [TUUrlPagina] = @original_TUUrlPagina WHERE (([TUCodice] = @original_TUCodice) OR ([TUCodice] IS NULL AND @original_TUCodice IS NULL))"
    >
    <DeleteParameters>
    <asp:Parameter Name="original_TUCodice" Type="String" />
    <asp:Parameter Name="original_TUTipoUtente" Type="String" />
    <asp:Parameter Name="original_TUTipoUtente" Type="String" />
    <asp:Parameter Name="original_TUUrlPagina" Type="String" />
    <asp:Parameter Name="original_TUUrlPagina" Type="String" />
    </DeleteParameters>
    <InsertParameters>
    <asp:Parameter Name="TUCodice" Type="String" />
    <asp:Parameter Name="TUTipoUtente" Type="String" />
    <asp:Parameter Name="TUUrlPagina" Type="String" />
    </InsertParameters>
    <SelectParameters>
    <asp:ControlParameter ControlID="GridView1" DefaultValue="" Name="TUCodice" PropertyName="SelectedValue" Type="String" />
    </SelectParameters>
    <UpdateParameters>
    <asp:Parameter Name="TUCodice" Type="String" />
    <asp:Parameter Name="TUTipoUtente" Type="String" />
    <asp:Parameter Name="TUUrlPagina" Type="String" />
    <asp:Parameter Name="original_TUCodice" Type="String" />
    <asp:Parameter Name="original_TUCodice" Type="String" />
    <asp:Parameter Name="original_TUTipoUtente" Type="String" />
    <asp:Parameter Name="original_TUTipoUtente" Type="String" />
    <asp:Parameter Name="original_TUUrlPagina" Type="String" />
    <asp:Parameter Name="original_TUUrlPagina" Type="String" />
    </UpdateParameters>
    </asp:SqlDataSource>

    </asp:Content>
    Pablo Ramiro Gonzales Pereira Garcia, Perez Blanco Rodriguez, Gomes Gallardo Ramirez, Lopez Vera Rameira, Vega Rosario Lorca Martinez
    www.benents.it
    I video su youtube

  2. #2

    Questa è la aspx.cs

    Pagina GestioneUtenti.aspx.cs:
    ------------------------------------------------------------------------

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.OleDb;
    using System.IO;

    namespace GestioneTabella
    {
    public partial class GestioneUtenti : System.Web.UI.Page
    {
    //################################################## ################################################## #####################
    // CLASSE
    //################################################## ################################################## #####################


    //Inizializzo le variabili del Conf e le librerie che si trovano nel sile /Lib/Library.cs
    LibraryConf LibraryConf = new LibraryConf();
    Library Library = new Library();




    protected void Page_Load(object sender, EventArgs e)
    {
    String Parametro = Request["p"];

    //Inserimento. Visualizzo la Details view in modalita inserimento e nascondo la lista
    if (Parametro == "ins")
    {
    //GridView1.SelectedIndex = -1;
    GridView1.Visible = false;
    DetailsView1.DefaultMode = DetailsViewMode.Insert;
    }


    }


    //================================================== ================================================== ============
    // GRIDVIEW
    //================================================== ================================================== ============
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {

    //-------------------------------------------------------------------
    //Prelevo i campi del record selezionato dal GridView

    //Campo chiave del gridview
    String Codice = e.Keys["UTCodice"].ToString();
    //...oppure
    //String Codice=GridView1.Rows[e.RowIndex].Cells[0].Text

    //Campo non chiave primaria
    //String Username = e.Values["UTUserName"].ToString();
    //-------------------------------------------------------------------



    //-------------------------------------------------------------------
    //Cancello il/i file/s allegato/i leggendo i files da cancellare dal database
    Library.LIBCancellaAllegatoDatabase("Utenti", "UTCodice", Codice, "UTImmagine", Server.MapPath(LibraryConf.CONFUrlAllegati));

    }

    protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
    {
    //Nascondo la DetailsView dopo la cancellazione della GridView
    DetailsView1.Visible = false;
    }

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
    //Visualizzo la DetailsView dopo la selezione della GridView
    DetailsView1.Visible = true;
    //Nascondo la GridView in fase di modifica di un record (altrimenti vedrei la lista sopra, e la scheda modificabile sotto)
    GridView1.Visible = false;
    }

    protected void GridView1_PageIndexChanged(object sender, EventArgs e)
    {
    //Azzero il valore selezionato della GridView dopo il salto pagina
    GridView1.SelectedIndex = -1;
    }
    //================================================== ================================================== ============
    // GRIDVIEW
    //================================================== ================================================== ============










    //================================================== ================================================== ============
    // DETAILSVIEW
    //================================================== ================================================== ============
    protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
    {

    //Se la username è già esistente do errore
    if (Library.LIBEsisteRecordDatabase("Utenti", "UTUserName", e.Values["UTUserName"].ToString(), 1) == true)
    {
    Response.Write("Username già esistente. Tornare indietro e cambiarla.");
    Response.End();
    }


    //Cripto la password prima di salvarla e la memorizzo nel campo della DetailView
    e.Values["UTPassword"] = Library.LIBCripta(e.Values["UTPassword"].ToString());


    //Carico il nuovo allegato
    FileUpload FileAllegato = DetailsView1.FindControl("FileAllegato") as FileUpload;
    if (FileAllegato.HasFile)
    {
    //Salvataggio file
    String NomeFile = DateTime.Now.ToString("yyyyMMddhhmmss") + "-" + FileAllegato.FileName;
    FileAllegato.SaveAs(Server.MapPath(LibraryConf.CON FUrlAllegati) + NomeFile);

    //Aggiorno il campo della DetailsView per poterlo salvare nel database, memorizzando il nome del nuovo allegato
    e.Values["UTImmagine"] = NomeFile;
    }
    }

    protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
    {
    //Aggiorno la GridView dopo l'inserimento della DetailsView
    GridView1.Visible = true;
    GridView1.DataBind();

    //Reindirizzo alla lista
    Response.Redirect("http://" + Request.ServerVariables["HTTP_HOST"] + Request.ServerVariables["SCRIPT_NAME"]);
    }

    protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    {
    //Se cambio la username ed è già esistente do errore
    if (e.OldValues["UTUserName"].ToString() != e.NewValues["UTUserName"].ToString() && Library.LIBEsisteRecordDatabase("Utenti", "UTUserName", e.NewValues["UTUserName"].ToString(), 1) == true)
    {
    Response.Write("Username già esistente. Tornare indietro e cambiarla.");
    Response.End();
    }

    //-------------------------------------------------------------------
    //Prelevo i campi del record selezionato dal GridView

    //Campo chiave del gridview
    String Codice = e.Keys["UTCodice"].ToString();
    //...oppure
    //String Codice=GridView1.Rows[e.RowIndex].Cells[0].Text

    //Campo non chiave primaria
    //String Username = e.Values["UTUserName"].ToString();
    //-------------------------------------------------------------------


    //Aggiorno il campo della DetailsView per poterlo salvare nel database prendendo il nome del vecchio allegato
    e.NewValues["UTImmagine"] = Library.LIBContenutoCampoDatabase("Utenti", "UTCodice", Codice, "UTImmagine");

    //Cripto la password prima di salvarla e la memorizzo nel campo della DetailView
    e.NewValues["UTPassword"] = Library.LIBCripta(e.NewValues["UTPassword"].ToString());


    //Se ho selezionato il checkbox cancello l'allegato
    CheckBox CancellaAllegato = DetailsView1.FindControl("CancellaAllegato") as CheckBox;
    if (CancellaAllegato.Checked == true)
    {
    //Cancello il/i file/s allegato/i vecchi leggendo i files da cancellare dal database
    Library.LIBCancellaAllegatoDatabase("Utenti", "UTCodice", Codice, "UTImmagine", Server.MapPath(LibraryConf.CONFUrlAllegati));
    //Aggiorno il campo della DetailsView per poterlo salvare nel database prendendo il nome del vecchio allegato
    e.NewValues["UTImmagine"] = "";
    }

    //Cancello allegato vecchio, carico il nuovo
    FileUpload FileAllegato = DetailsView1.FindControl("FileAllegato") as FileUpload;
    if (FileAllegato.HasFile)
    {
    //Cancello il/i file/s allegato/i vecchi leggendo i files da cancellare dal database
    Library.LIBCancellaAllegatoDatabase("Utenti", "UTCodice", Codice, "UTImmagine", Server.MapPath(LibraryConf.CONFUrlAllegati));

    //Salvataggio file nuovo
    String NomeFile = DateTime.Now.ToString("yyyyMMddhhmmss") + "-" + FileAllegato.FileName;
    FileAllegato.SaveAs(Server.MapPath(LibraryConf.CON FUrlAllegati) + NomeFile);

    //Aggiorno il campo della DetailsView per poterlo salvare nel database, memorizzando il nome del nuovo allegato
    e.NewValues["UTImmagine"] = NomeFile;
    }

    }

    protected void DetailsView1_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
    {
    //Aggiorno la GridView dopo l'aggiornamento della DetailsView
    GridView1.Visible = true;
    GridView1.DataBind();
    GridView1.SelectedIndex = -1;
    }

    protected void DetailsView1_ItemDeleted(object sender, DetailsViewDeletedEventArgs e)
    {
    //Aggiorno la GridView dopo l'eliminazione della DetailsView
    GridView1.Visible = true;
    GridView1.DataBind();
    GridView1.SelectedIndex = -1;
    }

    protected void DetailsView1_DataBound(object sender, EventArgs e)
    {
    //Una volta che sono stati caricati i dati nella DetailsView, solo se sono in fase di modifica..
    //Leggo il campo della password, lo decripto e lo visualizzo decriptato
    if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
    {
    try
    {
    //DeCripto la password prima di visualizzarla nel campo della DetailView
    TextBox Pass = DetailsView1.FindControl("UTPassword") as TextBox;
    String PassCriptata = Pass.Text;
    String PassChiara = Library.LIBDecripta(PassCriptata.ToString());
    Pass.Text = PassChiara;
    }
    catch (Exception ex)
    {
    }
    }

    }

    //================================================== ================================================== ============
    // DETAILSVIEW
    //================================================== ================================================== ============




    //================================================== ================================================== ============
    // CALENDARIO
    //================================================== ================================================== ============
    protected void CalendarDataInizio_SelectionChanged(object sender, EventArgs e)
    {
    //Inserisco nel campo data, la data scelta nel calendario
    TextBox tb;
    tb = DetailsView1.FindControl("UTDataInizio") as TextBox;
    if (tb != null)
    {
    Calendar c = (Calendar)sender;

    tb.Text = c.SelectedDate.ToShortDateString();
    //tb.Text = c.SelectedDate.Year.ToString() + c.SelectedDate.Month.ToString("00") + c.SelectedDate.Day.ToString("00");
    DetailsView1.FindControl("DivCalendarioDataInizio" ).Visible = false;
    }

    }

    protected void CalendarDataFine_SelectionChanged(object sender, EventArgs e)
    {
    //Inserisco nel campo data, la data scelta nel calendario
    TextBox tb;
    tb = DetailsView1.FindControl("UTDataFine") as TextBox;
    if (tb != null)
    {
    Calendar c = (Calendar)sender;

    tb.Text = c.SelectedDate.ToShortDateString();
    //tb.Text = c.SelectedDate.Year.ToString() + c.SelectedDate.Month.ToString("00") + c.SelectedDate.Day.ToString("00");
    DetailsView1.FindControl("DivCalendarioDataFine"). Visible = false;
    }

    }

    protected void VisualizzaCalendario(object sender, EventArgs e)
    {
    //Visualizza il calendario
    DetailsView1.FindControl("DivCalendarioDataInizio" ).Visible = true;
    DetailsView1.FindControl("DivCalendarioDataFine"). Visible = false;
    }

    protected void VisualizzaCalendario2(object sender, EventArgs e)
    {
    //Visualizza il calendario
    DetailsView1.FindControl("DivCalendarioDataFine"). Visible = true;
    DetailsView1.FindControl("DivCalendarioDataInizio" ).Visible = false;
    }




    }
    }
    Pablo Ramiro Gonzales Pereira Garcia, Perez Blanco Rodriguez, Gomes Gallardo Ramirez, Lopez Vera Rameira, Vega Rosario Lorca Martinez
    www.benents.it
    I video su youtube

  3. #3
    Il campo TUCodice che è impostato come datakey nel detailsview1 non è autogenerato... ma glielo devo poter dare io da form.

    sembra che siccome è chiave primaria non sia modificabile dal detailsview...!
    Pablo Ramiro Gonzales Pereira Garcia, Perez Blanco Rodriguez, Gomes Gallardo Ramirez, Lopez Vera Rameira, Vega Rosario Lorca Martinez
    www.benents.it
    I video su youtube

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.