Utilisation de données temporaires dans ASP.NET GridView
Auteur
Ainsi, vous avez peut-être rencontré la nécessité d'utiliser un DataGrid, mais vous ne souhaitez pas continuellement mettre à jour votre base de données avec chaque modification effectuée.
Heureusement, vous pouvez stocker toutes ces données dans la session, ajouter / supprimer des lignes et la transmettre entre le Client et le Serveur sans toucher la base de données.
Je ne vais pas approfondir dans la science, il y a des articles sur MSDN pour des choses comme ça.Tout d'abord, chargez un nouveau formulaire Web et vous devrez ajouter un DropDownList, GridView et deux boutons, l'un comme téléchargement de prétention à DB et un autre pour ajouter l'utilisateur à notre GridView.
J'ai exécuté tout cela sur mon système, donc le code devrait copier et coller directement, essayez d'ajouter chaque section afin que vous puissiez voir comment vous l'avez construit.
HTML
<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>
Auteur
VB
'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
Auteur
VB
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
Auteur
VB
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
Auteur
VB
Dim r As DataRow = myTable.Rows.Find(RowID)
myTable.Rows.Remove(r)
Return myTable
End Function
Auteur
VB
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
Auteur
VB
'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
Auteur
VB
'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