Web design and hosting, database, cloud and social media solutions that deliver business results
  • Бизнес решения
    • Веб-дизайн сайта
      • Безопасность веб-сайта
      • Остров Уайт
    • Бизнес-услуги
      • Microsoft Azure
    • Microsoft Office
    • Социальные медиа
  • Службы баз данных
    • Отчеты
      • Claytabase Server Disk IOPs Calculator
      • SQL-принтер
      • Восстановление кода SQL
    • Проверка телефонного номера в правильном формате Великобритании с SQL Server 2008
  • О нас
    • команда
      • Chester Copperpot
      • Гэвин Клейтон
    • Портфолио
  • Академия
    • Базы данных обучения
      • SQL-Server
      • В SQL Server 2008 план обслуживания
      • Использование SQL Server Pivot-Unpivot
      • Использование дат SQL Server
      • Использование функций SQL Server
    • Изучение веб-дизайна
      • ASP-NET
      • CSS
č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)

Использование временных данных в ASP.NET GridView

Создайте тестовую страницу с помощью Gridview, используя только временные данные в ASP.NET

автор

Таким образом, вы, возможно, сталкивались с необходимостью использования DataGrid, но не хотели постоянно обновлять свою базу данных при каждом внесенном изменении.

К счастью, вы можете хранить все эти данные в сеансах добавления / удаления строк и передавать их между Клиентом и Сервером, не касаясь базы данных.

Я не собираюсь много разбираться в науке, есть статьи о MSDN для таких вещей.

Прежде всего загрузите новую веб-форму, и вам нужно будет добавить DropDownList, GridView и две кнопки, одну как притворную загрузку в БД, а другую, чтобы добавить пользователя в наш GridView.

Я запустил все это в своей системе, поэтому код должен скопировать и вставить прямо, попробуйте добавить каждый раздел, чтобы вы могли видеть, как вы его создаете.

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="Mervin Pereira" 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>

автор

Сначала мы объявляем таблицу, мы будем называть это на странице загрузки

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

автор

Теперь мы добавляем функцию для добавления новых значений в нашу временную таблицу и возвращаем ее нам

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

автор

Затем у нас есть sub для обработки щелчка AddUser, который вызовет вышеприведенную функцию и вернет временную таблицу в сеанс и снова привяжет данные к нашей таблице.

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))
UserTable.DataSource = (CType(Session("myDatatable"), DataTable)).DefaultView
UserTable.DataBind()
End

автор

Мы добавили возможность пользователям удалять строки, поэтому нам нужно добавить эту функцию, которая удалит нужную строку и вернет таблицу.

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

автор

Теперь нам нужна Sub-граница для команды RowDeleting в UserTable, которая вызовет функцию Delete и повторно привяжет наши данные.

VB

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

автор

Таким образом, мы внедрили функции и процессы для обновления таблицы с пользовательского ввода и возврата их, поэтому теперь нам нужно обработать окончательный ввод и вывод из нашей таблицы. Для этого мы собираемся связать sub с событием Pre-Render на странице и вызвать некоторые из вышеперечисленных функций, а другое - обработать пользователей в этом случае фиктивной таблицей.

VB

'Dim UserID As String 'If adding a default user
'Dim UserName As String 'If adding a default user
'Dim con As New SqlConnection({yourconnection}) 'Handle our SQL Connection here
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

автор

Единственная часть, отсутствующая выше, - это средство привязки выпадающего списка UsersAvailable к базе данных (мы сделали это вручную), используя фиктивную команду SQL. Я показал это ниже, однако для этой страницы она прокомментировала это.

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

автор

Мне всегда было легче всего учиться, просто играя, поэтому попробуйте на своих машинах и посмотрите, как далеко вы можете это сделать. Единственное, что нужно помнить здесь, это то, что если будет огромное количество данных, проще просто привязать к базе данных, поскольку это должно уменьшить размер вашей страницы и уменьшить объем памяти на сервере.

автор

Helpful?

Please note, this commenting system is still in final testing.
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

RSSLoginLink Политика в отношении файлов cookieКарта сайта

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
Настройки на этом сайте настроены так, что разрешены все файлы cookie. Их можно изменить на странице политики и настроек cookie. Продолжая использовать этот сайт, вы соглашаетесь на использование файлов cookie.
Ousia Logo
Logout
Ousia CMS Loader