Web design and hosting, database, cloud and social media solutions that deliver business results
  • İş çözümleri
    • Robotik Süreç Otomasyonu
    • Veritabanı Hizmetleri
      • Veri Entegrasyonu
      • Araçlar
    • Yazılım
    • Web Sitesi Tasarımı
      • Web Sitesi Güvenliği
      • Web Yerelleştirme ve Çeviri
    • İş hizmetleri
      • Microsoft Azure
    • Microsoft Office
    • Sosyal Medya
  • Akademi
    • Test Ortamımız
    • Veritabanı Tasarımını Öğrenme
      • SQL-Server
      • SQL Server 2008 Bakım Planı
      • SQL Server işlevlerini kullanma
      • SQL Server Pivot-Unpivot'u Kullanma
      • SQL Server Tarihlerini Kullanma
    • Web Sitesi Tasarımı Öğrenme
      • ASP-NET
      • CSS
  • Hakkında
    • kariyer
      • İngilizce-Türkçe Çevirmen
    • Portföy
    • Takım
      • Adrian Anandan
      • Ali El Amin
      • Ayşe Hür
      • Chester Copperpot
      • Gavin Clayton
      • Sai Gangu
      • Sunel Kumar
      • Surya Mukkamala
č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'da Geçici Verileri Kullanma

İzlenecek yol: bir ASP.NET uygulamasında yalnızca geçici verileri kullanan bir GridView ile bir test sayfası nasıl oluşturulur

If you want to run through this walkthrough, please follow the guide on setting up our test environment.

Experience Level - Intermediate

Yazar

AddPage.png

Bu nedenle, bir DataGrid kullanma ihtiyacıyla karşılaşmış, ancak yapılan her değişiklikle veritabanınızı sürekli güncellemek istememiş olabilirsiniz.

Neyse ki, tüm bu verileri oturum ekleme/kaldırma satırlarında saklayabilir ve veritabanına dokunmadan İstemci ve Sunucu arasında iletebilirsiniz.

Bilime çok fazla dalmayacağım, bunun gibi şeyler için MSDN'de makaleler var.

Her şeyden önce, yeni bir web formu yükleyin ve bir DropDownList, GridView ve biri DB'ye taklit yükleme ve diğeri kullanıcıyı GridView'ımıza eklemek için iki düğme eklemeniz gerekecek.

Yukarıdaki bağlantıdan ClaytabaseAcademy Uygulamasını kullanıyorsanız, Visual Studio'daki Solution Explorer'da ClaytabaseAcademy öğesine sağ tıklayarak Pages adlı yeni bir klasör ekleyin ve ardından TemporaryData.aspx adlı bir sayfa ekleyin.

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>

Yazar

İlk önce tabloyu ilan ediyoruz, buna sayfa yükleme diyeceğiz

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

Yazar

Şimdi geçici tablomuza yeni değerler eklemek ve bize geri döndürmek için bir fonksiyon ekliyoruz.

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

Yazar

Ardından, yukarıdaki işlevi çağıracak ve geçici tabloyu oturuma döndürecek ve verileri tekrar tablomuza geri döndürecek olan AddUser tıklamasını işlemek için bir alt öğemiz var.

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

Yazar

Kullanıcıların satır silme özelliğini ekledik, bu yüzden gerekli satırı kaldıracak ve tabloyu döndürecek bu işlevi eklememiz gerekiyor.

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

Yazar

Şimdi UserTable'daki RowDeleting komutuna bağlı, Sil işlevini çağıracak ve verilerimizi yeniden bağlayacak bir Sub'a ihtiyacımız var.

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

Yazar

Bu yüzden, tabloyu kullanıcı girdisinden güncellemek ve geri döndürmek için işlevleri ve işlemleri yerine koyduk, bu yüzden şimdi tablomuzdaki son girdi ve çıktıyı işlememiz gerekiyor. Bunu yapmak için, sayfanın Pre-Render olayına bir alt bağlayacağız ve yukarıdaki işlevlerden bazılarını ve kullanıcıları bu durumda sahte bir tabloya işleyecek bir başkasını çağıracağız.

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

Yazar

Yukarıda eksik olan tek kısım, UsersAvailable açılır listesini bir veritabanına bağlama özelliğidir (bunu manuel olarak yaptık), kukla bir SQL komutu kullanarak bunu aşağıda gösterdim, ancak sayfa için yorumda bulundu.

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

Yazar

Her zaman sadece oynayarak öğrenmenin en kolay yolunu bulmuşumdur, bu yüzden makinenizde deneyin ve ne kadar ileri gidebileceğinizi görün. Burada hatırlanması gereken tek şey, eğer büyük miktarda veri olacaksa, sadece veritabanına bağlanmanın daha kolay olabileceğidir, çünkü bu, sayfanızın boyutunu daha küçük tutacak ve sunucuda daha az bellek kullanacaktır.

Yazar

Helpful?

Please note, this commenting system is still in final testing.

Claytabase tarafından web sitesi tasarımı

Bu, web sitesi tasarım hizmetlerimizin bir parçası olan piyasadaki en hızlı ve en optimize sistemlerden biri olan Ousia İçerik Yönetim Sistemi kodundan değiştirilmiş bir kod bölümüdür.

devamı: Duyarlı ve hızlı. İçerik Yönetim Sistemi ile Web Geliştirme, Tasarım ve Hosting
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

RSSLoginLink Çerez politikasısite haritası

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
Bu sitedeki ayarlar tüm çerezlere izin verecek şekilde ayarlanmıştır. Bunlar, çerez politikamız ve ayarlar sayfamızdan değiştirilebilir. Bu siteyi kullanmaya devam ederseniz, çerezlerin kullanımını kabul etmiş olursunuz.
Ousia Logo
Logout
Ousia CMS Loader