Web design and hosting, database, cloud and social media solutions that deliver business results
  • Soluciones de negocios
    • Automatización Robótica de Procesos
    • Software
    • Servicios de bases
      • Actualización del servidor y servicios de DBA
      • BI de energía
      • Integración de datos
      • Informes
    • Diseño web
      • Diseño de logo
      • Optimización del sitio web
      • Seguridad del sitio web
      • Traducción y localización web
      • Via de pago
      • Herramientas técnicas
    • Servicios en la nube
      • Servicios en la nube de Google
      • Servicios web de Amazon
      • microsoft azure
    • Medio Social
    • Microsoft Office
    • Hardware de TI
  • Academia
    • Nuestro entorno de prueba
    • Diseño de base de datos de aprendizaje
      • Los basicos
      • Obtener consulta abierta
      • Usando datos del servidor SQL
      • SQL Server 2008 para planes de mantenimiento
      • Usar fechas de SQL Server
      • Uso de las funciones de SQL Server
      • Uso de SQL Server Pivot-Unpivot
    • Aprendiendo Diseño Web
      • Creación del sistema de gestión de contenido de Ousia
      • ASP-NET
      • CSS
      • Usando JavaScript
    • Uso de las redes sociales
      • Cambiar una cuenta de Facebook de personal a empresa
      • Elegir dónde enfocar el esfuerzo de las redes sociales
      • Solicitar una revisión de Google
      • Tamaños de imagen de redes sociales
      • Uso de metadatos para configurar imágenes de redes sociales
    • Aprendizaje en la nube y servicios de TI
      • Error del programador de tareas 2147943645
      • Solicitud de SSL y generación de archivo PFX en OpenSSL Simple Steps
  • Acerca de
    • Blog
      • Actualización principal de Google, enero de 2020
      • Cierre de Internet de Hot Chilli
      • Cómo elegir el contenido de los folletos publicitarios de su sitio web
      • Construyendo una máquina de juego de nivel de entrada
      • Las cosas más molestas de los sitios web en Internet
      • Los 5 mejores sitios web para obtener gráficos vectoriales gratuitos
      • Prevención de estafas en línea
      • Skimmers de la gig economy
    • Carreras
      • Traductor inglés-español
      • Traductor inglés-japonés
    • Equipo
      • Ali Al Amine
      • Ayse Hur
      • Chester Copperpot
      • Gavin Clayton
      • Sai Gangu
      • suneel kumar
      • Surya Mukkamala
    • Portafolio
č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)

Uso de datos temporales en ASP.NET GridView

Generar una página de prueba con un GridView utilizando sólo datos temporales en ASP.NET

Autor

Así que puede haber encontrado la necesidad de utilizar un DataGrid, pero no quería actualizar continuamente su base de datos con cada cambio realizado.

Por suerte, puede almacenar todos estos datos en la sesión agregar / quitar filas, y pasarlo entre el cliente y el servidor sin tocar la base de datos.

No voy a profundizar mucho en la ciencia, hay artículos sobre MSDN para cosas como esa.

En primer lugar, cargar un nuevo formulario web y tendrá que agregar un DropDownList, GridView, y dos botones, uno como una carga de farsa a DB y otro para agregar el usuario a nuestro GridView.

He ejecutado todo esto en mi sistema, por lo que el código debe copiar y pegar directamente, intente agregar cada sección para que pueda ver cómo se construye.

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>

Autor

Primero declaramos la tabla, lo llamaremos en carga de página

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

Ahora añadimos una función para agregar nuevos valores a nuestra tabla temporal y devolverla a nosotros

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

A continuación tenemos un sub para manejar el clic de AddUser, que llamará a la función anterior y devolverá la tabla temporal a la sesión y bing los datos a nuestra tabla de nuevo.

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

Autor

Hemos añadido la posibilidad de que los usuarios eliminen filas, por lo que necesitamos agregar esta función que eliminará la fila requerida y devolverá la tabla.

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

Ahora necesitamos un Sub vinculado al comando RowDeleting en UserTable, que llamará a la función Delete y volverá a enlazar nuestros datos.

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

Autor

Así que hemos puesto en marcha las funciones y procesos para actualizar la tabla de entrada del usuario y devolverlos, por lo que ahora tenemos que manejar la entrada final y la salida de nuestra mesa. Para ello vamos a enlazar un sub del evento Pre-Render de la página y llamar a algunas de las funciones anteriores, y otra que procesará a los usuarios en este caso una tabla ficticia.

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

Autor

La única parte que falta de arriba es la facilidad para enlazar el menú desplegable UsersAvailable a una base de datos (lo hemos hecho manualmente), utilizando un comando SQL falso que he mostrado a continuación, sin embargo para la página lo comentó.

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

Siempre he encontrado que es más fácil aprender simplemente con una obra de teatro, así que pruébela en sus máquinas y vea hasta dónde puede llevarla. Lo único que hay que recordar aquí es que si va a haber una gran cantidad de datos, puede ser más fácil simplemente enlazar a la base de datos, ya que esto debe mantener el tamaño de la página más pequeña y usar menos memoria en el servidor.

Autor

Helpful?

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

Registered in England and Wales 08985867

Site Links

RSSLoginLink Política de cookiesmapa del sitio

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

La configuración de este sitio está configurada para permitir todas las cookies. Éstos se pueden cambiar en nuestra página de configuración y política de cookies. Al continuar utilizando este sitio, usted acepta el uso de cookies.
Ousia Logo
Logout
Ousia CMS Loader