Web design and hosting, database, cloud and social media solutions that deliver business results
  • Obchodní řešení
    • Databázové služby
      • Integrace dat
    • Robotická automatizace procesů
    • Návrh webových stránek
      • Zabezpečení webových stránek
    • Obchodní služby
      • Microsoft Azure
    • Microsoft Office
    • Sociální Média
  • Akademie
    • Výuka návrhu databáze
      • Zprávy
      • Pomocí serveru SQL Pivot-Unpivot
      • Použití dat serveru SQL Server
      • Používání funkcí dat serveru SQL Server
      • Používání funkcí serveru SQL Server
      • SQL Server 2008 plán údržby
    • Výuka designu webových stránek
      • CSS
      • ASP NET
  • O nás
    • Portfolio
    • tým
      • Gavin Clayton
      • Chester Copperpot
      • Suneel Kumar
č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)

Použití dočasných dat v ASP.NET GridView

Vytvořte zkušební stránku s zobrazením Grid pomocí pouze dočasných dat v ASP.NET

Autor

Takže možná jste narazili na potřebu použití DataGrid, ale nechtěli jste neustále aktualizovat databázi s každou provedenou změnou.

Naštěstí můžete všechna tato data ukládat do relací přidávat / odstraňovat řádky a předávat je mezi klientem a serverem bez dotyku databáze.

Nehodlám se dostat do vědy, tam jsou články o MSDN pro takové věci.

Nejprve načtěte nový webový formulář a budete muset přidat DropDownList, GridView a dvě tlačítka, jednu jako předstírání nahrávání do DB a další pro přidání uživatele do našeho GridView.

Spustil jsem to všechno v mém systému, takže kód by měl kopírovat a vkládat přímo, zkuste přidávat jednotlivé sekce, abyste viděli, jak je vytváříte.

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

Nejprve deklarujeme tabulku, budeme ji nazývat na stránce načtení

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

Nyní přidáme funkci přidat nové hodnoty do naší dočasné tabulky a vrátit ji k nám

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

Dále máme díl, který zvládne kliknutí AddUser, které zavolá funkci výše a vrátí dočasnou tabulku do relace a znovu přidá data do tabulky.

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

Přidali jsme uživatelům možnost smazat řádky, takže musíme přidat tuto funkci, která odstraní požadovaný řádek a vrátí tabulku.

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

Nyní potřebujeme Subbound na příkaz RowDeleting na UserTable, který zavolá funkci Delete a znovu naváže naše data.

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

Takže jsme zavedli funkce a procesy, abychom aktualizovali tabulku z uživatelského vstupu a vrátili je, takže teď musíme zpracovat konečný vstup a výstup z naší tabulky. Za tímto účelem budeme vázat dílku na událost Pre-Render stránky a zavolat některé z výše uvedených funkcí a další, které budou uživatelům zpracovávat v tomto případě tabulku.

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

Jedinou chybějící částí je schopnost sdružovat rozbalovací nabídku UsersAvailable na databázi (to jsme provedli ručně) pomocí fiktivního příkazu SQL. Ukázal jsem to níže, nicméně na stránku komentovala.

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

Vždycky jsem se cítil nejsnadněji učit tím, že prostě hrajete, tak zkuste to na vašich strojích a zjistěte, jak daleko to můžete vzít. Jediná věc, na kterou je třeba si uvědomit, je, že pokud bude velké množství dat, může být jednodušší pouze vázat na databázi, protože by to mělo mít menší velikost stránky a méně paměti na serveru.

Autor

Helpful?

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

Registered in England and Wales 08985867

RSSLoginLink Cookie Policymapa stránek

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
Nastavení na této stránce jsou nastaveny povolit všechny soubory cookie. Ty mohou být změněny na našich zásad a nastavení stránky cookie. Nadále používat tento web souhlasíte s použitím cookies.
Ousia Logo
Logout
Ousia CMS Loader