Web design and hosting, database, cloud and social media solutions that deliver business results
  • Rozwiązania biznesowe
    • Oprogramowanie
    • Projektowanie stron
      • Bezpieczeństwo witryny
      • Lokalizacja i tłumaczenie stron internetowych
    • Usługi baz danych
      • Integracja danych
      • Przybory
    • Zrobotyzowana automatyzacja procesów
    • Usługi biznesowe
      • Microsoft Azure
    • Media Społecznościowe
    • Microsoft Office
  • Akademia
    • Nasze środowisko testowe
    • Nauka projektowania baz danych
      • Używanie funkcji datownika SQL Server
      • SQL Server 2008 planu konserwacji
      • Korzystanie z funkcji serwera SQL Server
      • Korzystanie z programu SQL Server Pivot-Unpivot
      • Używanie dat serwera SQL
    • Nauka projektowania stron internetowych
      • CSS
      • ASP-NET
      • Korzystanie z JavaScript
    • Nauka w chmurze i usługi IT
      • Błąd harmonogramu zadań 2147943645
      • Żądanie SSL i generowanie pliku PFX w OpenSSL Simple Steps
  • O
    • Portfel Pracy
    • Zespół
      • Adrian Anandan
      • Ali 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)

Korzystanie z danych tymczasowych w ASP.NET GridView

Przewodnik: jak zbudować stronę testową z GridView, która używa tylko danych tymczasowych w aplikacji ASP.NET

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

Experience Level - Intermediate

Autor

DodajStrona.png

Być może natknąłeś się na potrzebę korzystania z DataGrid, ale nie chciałeś stale aktualizować bazy danych po każdej dokonanej zmianie.

Na szczęście możesz przechowywać wszystkie te dane w sesjach dodaj/usuń wiersze i przekazywać je między klientem a serwerem bez dotykania bazy danych.

Nie zamierzam zagłębiać się zbytnio w naukę, w MSDN są artykuły na takie tematy.

Przede wszystkim załaduj nowy formularz internetowy i będziesz musiał dodać DropDownList, GridView i dwa przyciski, jeden jako symulowane przesyłanie do bazy danych, a drugi, aby dodać użytkownika do naszego GridView.

Jeśli korzystasz z aplikacji ClaytabaseAcademy z powyższego łącza, dodaj nowy folder o nazwie Strony, klikając prawym przyciskiem myszy element ClaytabaseAcademy w Eksploratorze rozwiązań w programie Visual Studio, a następnie dodaj stronę o nazwie 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>

Autor

Najpierw deklarujemy tabelę, nazwiemy to przy ładowaniu strony

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

Autor

Teraz dodajemy funkcję dodawania nowych wartości do naszej tabeli tymczasowej i zwracania jej do nas

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

Autor

Następnie mamy sub do obsługi kliknięcia AddUser, który wywoła powyższą funkcję i zwróci tabelę tymczasową do sesji i ponownie przeniesie dane do naszej tabeli.

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

Autor

Dodaliśmy możliwość usuwania wierszy przez użytkowników, więc musimy dodać tę funkcję, która usunie wymagany wiersz i zwróci tabelę.

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

Autor

Teraz potrzebujemy Sub powiązanego z poleceniem RowDeleting w UserTable, które wywoła funkcję Delete i ponownie powiąże nasze dane.

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

Autor

Wprowadziliśmy więc funkcje i procesy, które aktualizują tabelę z danych wejściowych użytkownika i zwracają je, więc teraz musimy obsłużyć końcowe dane wejściowe i wyjściowe z naszej tabeli. Aby to zrobić, powiążemy sub ze zdarzeniem Pre-Render strony i wywołamy niektóre z powyższych funkcji, a także inną, która przetworzy użytkowników w tym przypadku na fikcyjną tabelę.

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

Autor

Jedyną częścią, której brakuje powyżej, jest funkcja powiązania listy rozwijanej UsersAvailable z bazą danych (zrobiliśmy to ręcznie), za pomocą fikcyjnego polecenia SQL, które pokazałem poniżej, jednak dla strony zostało to skomentowane.

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

Autor

Zawsze uważałem, że najłatwiej jest się nauczyć, po prostu grając, więc wypróbuj go na swoich maszynach i zobacz, jak daleko możesz to posunąć. Jedyną rzeczą do zapamiętania jest to, że jeśli będzie duża ilość danych, może być łatwiej po prostu powiązać z bazą danych, ponieważ powinno to zmniejszyć rozmiar strony i zużywać mniej pamięci na serwerze.

Autor

Helpful?

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

Projekt strony internetowej przez Claytabase

Jest to sekcja kodu, która została zmodyfikowana z kodu systemu zarządzania treścią Ousia, jednego z najszybszych i najbardziej zoptymalizowanych systemów na rynku, będącego częścią naszych usług projektowania stron internetowych.

więcej: Responsywne i szybkie. Tworzenie, projektowanie i hosting stron internetowych z systemem zarządzania treścią
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

RSSLoginLink Polityka Cookiemapa strony

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
Ustawienia na tej stronie są ustawione tak, że wszystkie pliki cookie. Mogą one być zmieniane na naszej polityki i ustawień strony z ciasteczkami. Dalsze korzystanie z tej strony, wyrażasz zgodę na korzystanie z plików cookie.
Ousia Logo
Logout
Ousia CMS Loader