GridView SelectedIndexChanged + ItemTemplate + DataTable Unique Column + Session 使用方法

 
GridView SelectedIndexChanged + ItemTemplate + DataTable Unique Column + Session 使用方法
 

   Default.aspx
 
   <%@ Page Title="首頁" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
   CodeBehind="Default.aspx.cs" Inherits="WebApplication9._Default" %>
 
   <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
   </asp:Content>
 
   <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
 
      <asp:Button ID="Button1" runat="server" Text="Clear Session" onclick="Button1_Click" />
      <br /><br />
 
      <asp:GridView ID="GridView2" runat="server"
      AutoGenerateColumns="false" AllowSorting="true">
 
         <Columns>
 
            <asp:CommandField ShowDeleteButton="true" DeleteText="Clear" />
 
            <asp:TemplateField HeaderText="Team Name">
               <ItemTemplate>
                  <asp:Label ID="L1" runat="server" Text='<%# Eval("Team") %>' />
               </ItemTemplate>
            </asp:TemplateField>
 
         </Columns>
 
      </asp:GridView>
 
      <br />
 
      <asp:SqlDataSource ID="SqlDataSource2" runat="server"
      ConnectionString="Data Source=.\SqlExpress; Initial Catalog=Soccer;
      Integrated Security=SSPI"
      SelectCommand="SELECT * FROM Team;" />
 
      <asp:GridView ID="GridView1" runat="server" AllowPaging="true" PageSize="10"
      DataSourceID="SqlDataSource2" AutoGenerateColumns="false">
 
         <Columns>
 
            <asp:CommandField ShowSelectButton="true" SelectText="Select" />
 
            <asp:TemplateField HeaderText="Team ID" Visible="false">
               <ItemTemplate>
                  <asp:Label ID="L1" runat="server" Text='<%# Eval("Team_ID") %>'/>
               </ItemTemplate>
            </asp:TemplateField>
 
            <asp:TemplateField HeaderText="Team Name">
               <ItemTemplate>
                  <asp:Label ID="L3" runat="server" Text='<%# Eval("Team_Name") %>'></asp:Label>
               </ItemTemplate>
            </asp:TemplateField>
 
         </Columns>
 
      </asp:GridView>
 
   </asp:Content>
 

 

   Default.aspx.cs
 
   using System;
   using System.Web;
   using System.Collections;
   using System.Collections.Generic;
   using System.Web.UI.WebControls;
   using System.Data;
 
   namespace WebApplication9
   {
      public partial class _Default : System.Web.UI.Page
      {
         DataTable SessionDataTable;
 
         protected void Page_Init(object sender, EventArgs e)
         {
            GridView1.SelectedIndexChanged += new EventHandler(GridView1_SelectedIndexChanged);
            GridView2.RowDeleting += new GridViewDeleteEventHandler(GridView2_RowDeleting);
            GridView2.RowDeleted += new GridViewDeletedEventHandler(GridView2_RowDeleted);
         }
 
         void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
         {
            int GridViewSelectedIndex = e.RowIndex;
            int DeleteRowIndex = -1;
            int RowCheck = 0;
            Label TeamHyperLink = (Label)((GridView)sender).Rows[GridViewSelectedIndex].Cells[1].Controls[1];
 
            if (SessionDataTable != null)
            {
               foreach (DataRow item in SessionDataTable.Rows)
               {
                  if(item[0].ToString().Trim() == TeamHyperLink.Text.ToString().Trim()){
                     DeleteRowIndex = RowCheck;
                  }
                  RowCheck++;
               }
 
               if (GridViewSelectedIndex != -1) SessionDataTable.Rows[DeleteRowIndex].Delete();
 
               GridView2.DataSource = SessionDataTable;
               GridView2.DataBind();
            }
         }
 
         void GridView2_RowDeleted(object sender, GridViewDeletedEventArgs e)
         {
 
         }
 
         protected void Page_Load(object sender, EventArgs e)
         {
            if (Session["Team"] != null)
            {
               // Retrieve Session & Bind Item On GridView2
               SessionDataTable = Session["Team"] as DataTable;
               GridView2.DataSource = SessionDataTable;
               GridView2.DataBind();
            }
         }
 
         void GridView1_SelectedIndexChanged(object sender, EventArgs e)
         {
            int GridViewSelectedIndex = ((GridView)sender).SelectedIndex;
            Label TeamHyperLink = (Label)((GridView)sender).Rows[GridViewSelectedIndex].Cells[2].Controls[1];
 
            if (Session["Team"] == null)
            {
               // Create Session & Add Record
               SessionDataTable = new DataTable();
               SessionDataTable.Columns.Add("Team");
               SessionDataTable.Columns[0].Unique = true;
 
               SessionDataTable.Rows.Add(TeamHyperLink.Text.Trim());
               Session.Add("Team", SessionDataTable);
 
               // Session Timeout in 1 minutes
               Session.Timeout = 1;
            }else{
               // Retrieve Session & Add Record
               SessionDataTable = Session["Team"] as DataTable;
 
               bool NoDuplicate = true;
 
               foreach (DataRow dr in SessionDataTable.Rows)
               {
                  if (dr[0].ToString().Trim() == TeamHyperLink.Text.Trim())
                  {
                     NoDuplicate = false;
                  }
               }
 
               if (NoDuplicate)
               {
                  SessionDataTable.Rows.Add(TeamHyperLink.Text);
                  Session.Add("Team", SessionDataTable);
               }
            }
 
            GridView2.DataSource = SessionDataTable;
            GridView2.DataBind();
 
         }
 
         protected void Button1_Click(object sender, EventArgs e)
         {
            // Destroy Session
            Session.Abandon();
            Response.Redirect("Default.aspx");
         }
      }
   }