ASP.Netのお勉強

GridViewに行追加(DataTable、Session)@ASP.Net

GridViewに行を追加します。

色々と方法があるかと思いますが、
ここでは、行を追加する欄を設けて、追加ボタンにより、
GridViewに追加を行います。

ページロード時に、DataTableを作成します。
セッションに格納します。
また、GridViewに配置して、DataBindを行います。

追加ボタンの押下時には、
セッションからDataTableを取得し、
追加行をDataTableに追加します。
セッションに格納し、再度GridViewに配置してDataBindを行います。

●aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>GridViewに行追加</title>
</head>
<body>
    <form id="form1" runat="server">
        ID<asp:TextBox ID="idTxt" runat="server"></asp:TextBox>
        NAME<asp:TextBox ID="nameTxt" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="追加" />

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None">
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <Columns>
                <asp:BoundField HeaderText="ID" DataField="ID" />
                <asp:BoundField HeaderText="NAME" DataField="NAME" />
            </Columns>
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <EditRowStyle BackColor="#999999" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        </asp:GridView>
    </form>
</body>
</html>


●aspx.vb

Imports System.data

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then

            'DataTableを作成
            Dim dt As DataTable
            Dim dr As DataRow

            dt = New DataTable()
            dt.Columns.Add(New DataColumn("ID", GetType(String)))
            dt.Columns.Add(New DataColumn("NAME", GetType(String)))

            dr = dt.NewRow()
            dr(0) = "1"
            dr(1) = "NAME1"
            dt.Rows.Add(dr)

            dr = dt.NewRow()
            dr(0) = "2"
            dr(1) = "NAME2"
            dt.Rows.Add(dr)

            'セッションに格納
            Session("DataTable") = dt

            'GridViewにDataTableを配置して、DataBind
            Me.GridView1.DataSource = dt
            Me.GridView1.DataBind()
End If
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim dt As DataTable
        Dim dr As DataRow

        'セッションからDataTableを取得
        dt = Session("DataTable")

        '追加された行をDataTableに追加
        dr = dt.NewRow()
        dr(0) = Me.idTxt.Text
        dr(1) = Me.nameTxt.Text
        dt.Rows.Add(dr)

        'セッションに格納
        Session("DataTable") = dt

        'GridViewにDataTableを配置して、DataBind
        Me.GridView1.DataSource = dt
        Me.GridView1.DataBind()

    End Sub
End Class

Copyright (C) ASP.Netのお勉強. All Rights Reserved.