Web design and hosting, database, cloud and social media solutions that deliver business results
  • Soluzioni aziendali
    • automazione dei processi robotici
    • Software
    • Servizi database
      • Aggiornamento del server e servizi DBA
      • Integrazione dei dati
      • Power BI
      • Servizi di Datawarehouse
    • Sito Web Design
      • Design del logo
      • Gateway di pagamento
      • Localizzazione e traduzione web
      • Ottimizzazione del sito web
      • Sicurezza del sito
      • Strumenti tecnici
    • Servizi per gli affari
      • Microsoft Azure
      • Servizi Google Cloud
      • Servizi Web Amazon
    • Microsoft Office
    • Servizi di consulenza e gestione dei social media
  • Accademia
    • Il nostro ambiente di prova
    • Imparare a usare i database
      • Le basi
      • Ottieni una query aperta
      • Piano di manutenzione di SQL Server 2008
      • Utilizzo dei dati di SQL Server
      • Utilizzo delle date di SQL Server
      • Utilizzo delle funzioni di SQL Server
      • Utilizzo di SQL Server Pivot-Unpivot
      • Strumenti
    • Imparare il web design
      • Costruire il sistema di gestione dei contenuti di Ousia
      • ASP-NET
      • CSS
      • Utilizzo di JavaScript
    • Usando i social media
      • Chiedere una recensione su Google
      • Dimensioni delle immagini dei social media
      • Modifica di un account Facebook da personale a aziendale
      • Scegliere dove concentrare lo sforzo sui social media
      • Utilizzo dei metadati per impostare le immagini dei social media
    • Imparare a usare il cloud e i servizi informatici
      • Errore dell'utilità di pianificazione 2147943645
      • Richiesta SSL e generazione di file PFX in OpenSSL Simple Steps
  • Chi Siamo
    • Carriere
      • Traduttore inglese-portoghese
      • Traduttore inglese-spagnolo
    • Portfolio
    • Squadra
      • Adrian Anandan
      • Alì Al Amine
      • Ayse Hur
      • Chester Copperpot
      • Gavin Clayton
      • Sai Gangu
      • Suneel Kumar
      • Surya Mukkamala
čeština (CS)Deutsch (DE)English (EN-US)English (EN-GB)Español (ES)Français (FR)हिंदी (HI)italiano (IT)日本語 (JA)polski (PL)Português (PT)русский (RU)Türk (TR)中国的 (ZH)

Utilizzo di dati temporanei in ASP.NET GridView

Procedura dettagliata: come creare una pagina di test con un GridView che usa solo dati temporanei in un'applicazione ASP.NET

If you want to run through this walkthrough, please follow the guide on setting up our test environment.

Experience Level - Intermediate

Autore

AddPage.png

Quindi potresti aver riscontrato la necessità di utilizzare un DataGrid, ma non voler aggiornare continuamente il tuo database con ogni modifica apportata.

Fortunatamente puoi archiviare tutti questi dati nelle righe di aggiunta/rimozione della sessione e passarli tra il client e il server senza toccare il database.

Non approfondirò molto la scienza, ci sono articoli su MSDN per cose del genere.

Prima di tutto, carica un nuovo modulo web e dovrai aggiungere un DropDownList, GridView e due pulsanti, uno come finto caricamento su DB e un altro per aggiungere l'utente al nostro GridView.

Se stai usando l'app ClaytabaseAcademy dal link sopra, aggiungi una nuova cartella chiamata Pages facendo clic con il pulsante destro del mouse sull'elemento ClaytabaseAcademy in Solution Explorer su Visual Studio, quindi aggiungi una pagina chiamata TemporaryData.aspx

HTML

<div>    <asp:DropDownList ID="UserAvailable" runat="server" Width="200px">    <asp:ListItem Text="Gavin Clayton" Value="1"></asp:ListItem>    <asp:ListItem Text="Sai Gangu" Value="2"></asp:ListItem>    <asp:ListItem Text="Chester Copperpot" Value="3"></asp:ListItem>    </asp:DropDownList>    <asp:Button ID="AddUser" runat="server" Text="Add User" /></div><div>    <asp:GridView ID="UsersForSignOffList" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" GridLines="None" BorderStyle="None" CssClass="DocsGrid">    <AlternatingRowStyle CssClass="alt" />    <Columns>    <asp:BoundField DataField="UserName" HeaderText="Name" SortExpression="UserName" />    <asp:CommandField ShowDeleteButton="True">    <ItemStyle Width="125px" />    </asp:CommandField>    </Columns>    <HeaderStyle BackColor="#CCCCCC" />    <RowStyle CssClass="Grid" />    </asp:GridView></div><div>    <asp:Button ID="UploadTable" runat="server" Text="Upload" /></div>

Utile?

Per prima cosa dichiariamo la tabella, la chiameremo al caricamento della pagina

VB

    Private Function CreateTable() As DataTable        'Add a user column        Dim dt As DataTable = New DataTable        Dim column As DataColumn        column = New DataColumn()        column.DataType = System.Type.GetType("System.Int32")        column.ColumnName = "UserID"        column.ReadOnly = False        column.Unique = True        dt.Columns.Add(column)        'add a user name column        column = New DataColumn()        column.DataType = System.Type.GetType("System.String")        column.ColumnName = "UserName"        column.ReadOnly = False        column.Unique = False        dt.Columns.Add(column)        'Add a unique column with its own unique id (for delete function)        column = New DataColumn()        column.DataType = System.Type.GetType("System.Int32")        column.ColumnName = "ID"        column.ReadOnly = False        column.Unique = True        column.AutoIncrement = True        column.AutoIncrementSeed = 1        dt.Columns.Add(column)        'add primary key (first key) on column ID        Dim PrimaryKeyColumns(0) As DataColumn        PrimaryKeyColumns(0) = dt.Columns("ID")        dt.PrimaryKey = PrimaryKeyColumns        Return dt    End Function

Utile?

Ora aggiungiamo una funzione per aggiungere nuovi valori alla nostra tabella temporanea e restituircela

VB

    Private Function AddDataToTable(ByVal UserID As Int32, ByVal UserName As String, ByVal myTable As DataTable) As DataTable        Try            Dim row As DataRow            row = myTable.NewRow()            row("UserID") = UserID            row("UserName") = UserName            myTable.Rows.Add(row)            Return myTable        Catch            Return myTable        End Try    End Function

Utile?

Successivamente abbiamo un sottotitolo per gestire il clic AddUser, che chiamerà la funzione sopra e restituirà la tabella temporanea alla sessione e trasferirà nuovamente i dati alla nostra tabella.

VB

    Protected Sub Add_Click(sender As Object, e As System.EventArgs) Handles AddUser.Click        AddDataToTable(UserAvailable.Items.FindByValue(UserAvailable.SelectedValue).Value, UserAvailable.Items.FindByValue(UserAvailable.SelectedValue).Text.ToString, CType(Session("myDatatable"), DataTable))        UsersForSignOffList.DataSource = (CType(Session("myDatatable"), DataTable)).DefaultView        UsersForSignOffList.DataBind()    End Sub

Utile?

Abbiamo aggiunto la possibilità per gli utenti di eliminare le righe, quindi dobbiamo aggiungere questa funzione che rimuoverà la riga richiesta e restituirà la tabella.

VB

    Private Function DelDataFromTable(ByVal RowID As Int32, ByVal myTable As DataTable) As DataTable        Dim r As DataRow = myTable.Rows.Find(RowID)        myTable.Rows.Remove(r)        Return myTable    End Function

Utile?

Ora abbiamo bisogno di un Sub associato al comando RowDeleting su UserTable, che chiamerà la funzione Delete e ricollegherà i nostri dati.

VB

    Protected Sub UsersForSignOffList_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles UsersForSignOffList.RowDeleting        Dim Id As Integer = e.Keys(0).ToString        DelDataFromTable(Id, CType(Session("myDatatable"), DataTable))        UsersForSignOffList.DataSource = (CType(Session("myDatatable"), DataTable)).DefaultView        UsersForSignOffList.DataBind()    End Sub

Utile?

Quindi abbiamo messo in atto le funzioni e i processi per aggiornare la tabella dall'input dell'utente e restituirli, quindi ora dobbiamo gestire l'input e l'output finali dalla nostra tabella. Per fare ciò legheremo un sottotitolo all'evento Pre-Render della pagina e chiameremo alcune delle funzioni di cui sopra, e un altro che elaborerà gli utenti in questo caso in una tabella fittizia.

VB

    Private Sub Page_Load() Handles Me.PreRender        If Not IsPostBack Then            GetUsers()            Dim mydt = New DataTable()            mydt = CreateTable()            Session("myDatatable") = mydt            'AddDataToTable(UserID, UserName, CType(Session("myDatatable"), DataTable)) ' If adding a default user            UsersForSignOffList.DataSource = (CType(Session("myDatatable"), DataTable)).DefaultView            UsersForSignOffList.DataBind()        End If    End Sub    Private Sub AddUsersToTable() Handles UploadTable.Click        Dim AddUser As New SqlCommand        'AddUser.Connection = con 'You will also need to open and close your connection in here        Dim dt As DataTable = CType(Session("myDatatable"), DataTable)        Dim dr As DataRow        For i = 0 To dt.Rows.Count - 1            dr = dt.Rows(i)            'AddUser.CommandText = "INSERT INTO LinkedUsers(UserID) SELECT " + dr.Item(0).ToString()            'AddUser.ExecuteNonQuery()        Next    End Sub

Utile?

L'unica parte che manca dall'alto è la possibilità di associare il menu a discesa UsersAvailable a un database (lo abbiamo fatto manualmente), utilizzando un comando SQL fittizio che ho mostrato di seguito, tuttavia per la pagina l'ho commentato.

VB

    Private Sub GetUsers()        'Dim com As New SqlCommand("SELECT * FROM Users", con)        'Dim tr = com.ExecuteReader        'UserAvailable.DataSource = tr        'UserAvailable.DataTextField = "UserName"        'UserAvailable.DataValueField = "UserID"        'UserAvailable.DataBind()        'tr.Close()    End Sub

Utile?

Ho sempre trovato più facile imparare semplicemente facendo un gioco, quindi provalo sulle tue macchine e vedi fino a che punto puoi portarlo. L'unica cosa da ricordare qui è che se ci sarà un'enorme quantità di dati potrebbe essere più semplice collegarsi semplicemente al database, in quanto ciò dovrebbe mantenere le dimensioni della pagina più piccole e utilizzare meno memoria sul server.

Autore

Utile?

Please note, this commenting system is still in final testing.

Sito web realizzato da Claytabase

Questa è una sezione di codice che è stata modificata dal codice di Ousia Content Management System, uno dei sistemi più veloci e ottimizzati sul mercato, parte dei nostri servizi di progettazione di siti web.

di più: Reattivo e veloce. Sviluppo web, design e hosting con sistema di gestione dei contenuti
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

Site Links

RSSLoginLink Cookie PolicyMappa del sito

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom

Partnered With

Le impostazioni di questo sito sono impostate per consentire tutti i cookie. Questi possono essere modificati sulla nostra pagina politica e le impostazioni dei cookie. Continuando a utilizzare questo sito l'utente accetta l'utilizzo dei cookie.
Ousia Logo
Logout
Ousia CMS Loader