Korzystanie z danych tymczasowych w ASP.NET GridView
If you want to run through this walkthrough, please follow the guide on setting up our test environment.
Experience Level - Intermediate
Autor
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
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
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
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
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
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
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
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
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.