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"); } } } |