代码
using System;
using System.Web.UI.WebControls;
using Utilities;
using System.Collections.ObjectModel;
public partial class Code_Sample_Listing_Page : System.Web.UI.Page
{
#region "Click/Command Handlers"
protected void GridViewEmployees_RowCommand(object sender, System.Web.UI.WebControls.CommandEventArgs e)
{
if (e.CommandName == "cmdView")
WebManager.RedirectToDetailsPage("details-page.aspx", e.CommandArgument.ToString(), FormViewMode.ReadOnly);
else if (e.CommandName == "cmdEdit")
WebManager.RedirectToDetailsPage("details-page.aspx", e.CommandArgument.ToString(), FormViewMode.Edit);
else if (e.CommandName == "cmdDelete")
{
//implicit delete method call: the code below will invoke the delete method is the corresponding object data source implicitly
gridViewEmployees.DeleteRow(Convert.ToInt32(e.CommandArgument,System.Globalization.CultureInfo.CurrentCulture.NumberFormat)); //command argument contains row index
}
}
protected void ButtonDeleteSelected_Click(object sender, System.EventArgs e)
{
try
{
// Create a List to hold the EmployeeID values to delete
Collection<Int32> employeeIDsToDelete = new Collection<Int32>();
// Iterate through the Employees.Rows property
foreach (GridViewRow row in gridViewEmployees.Rows)
{
// Access the CheckBox
CheckBox cb = (CheckBox)(row.FindControl("chkEmployeeSelector"));
if (cb != null && cb.Checked)
{
// Save the EmployeeID value for deletion
// First, get the EmployeeID for the selected row
Int32 employeeId = (Int32)gridViewEmployees.DataKeys[row.RowIndex].Value;
// Add it to the List...
employeeIDsToDelete.Add(employeeId);
// Add a confirmation message
labelMessage.Text += String.Format(System.Globalization.CultureInfo.CurrentCulture, "Delete successful. EmployeeId {0} has been deleted<br />", employeeId);
labelMessage.ForeColor = System.Drawing.Color.Green;
}
}
//perform the actual delete
if (Entity.Employee.DeleteEmployees(employeeIDsToDelete) == false)
labelMessage.Text = "There is a problem deleting all items. One or more items have not been deleted due to problem.";
}
catch (Exception ex)
{
labelMessage.Text = "Problem while deleting. " + ex.Message;
labelMessage.ForeColor = System.Drawing.Color.Red;
}
//binding the grid
gridViewEmployees.PageIndex = 0;
gridViewEmployees.DataBind();
}
protected void ButtonAdd_Click(object sender, System.EventArgs e)
{
WebManager.RedirectToDetailsPage("details-page.aspx", "0", FormViewMode.Insert);
}
#endregion
protected void GridViewEmployees_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if ((e.Row.RowType == DataControlRowType.Header))
{
//adding an attribut for onclick event on the check box in the hearder and passing the ClientID of the Select All checkbox
((CheckBox)e.Row.FindControl("chkSelectAll")).Attributes.Add("onclick", "SelectAll('" + gridViewEmployees.ClientID + "','" + ((CheckBox)e.Row.FindControl("chkSelectAll")).ClientID + "')");
}
if (e.Row.RowType == DataControlRowType.DataRow)
{
Int32 employeeId = (Int32)gridViewEmployees.DataKeys[e.Row.RowIndex].Value;
ImageButton imbtnView;
imbtnView = (ImageButton)e.Row.FindControl("lnbView");
//assigning alternate text for w3c validation
imbtnView.AlternateText = "view";
imbtnView.CommandArgument = employeeId.ToString(System.Globalization.CultureInfo.CurrentCulture.NumberFormat);
ImageButton imbtnEdit;
imbtnEdit = (ImageButton)e.Row.FindControl("lnbEdit");
//assigning alternate text for w3c validation
imbtnEdit.AlternateText = "edit";
imbtnEdit.CommandArgument = employeeId.ToString(System.Globalization.CultureInfo.CurrentCulture.NumberFormat);
ImageButton imbtnDelete = (ImageButton)e.Row.FindControl("lnbDelete");
//assigning alternate text for w3c validation
imbtnDelete.AlternateText = "delete";
imbtnDelete.CommandArgument = e.Row.RowIndex.ToString(System.Globalization.CultureInfo.CurrentCulture.NumberFormat);
imbtnDelete.Attributes.Add("onclick", "javascript:return confirm('Are you sure you want to delete?');");
}
}
protected void odsOrderDetails_Deleted(object sender, ObjectDataSourceStatusEventArgs e)
{
//getting the result
bool result = Convert.ToBoolean(e.ReturnValue, System.Globalization.CultureInfo.CurrentCulture.NumberFormat);
if (result)
{
labelMessage.Text = "Delete successful.";
labelMessage.ForeColor = System.Drawing.Color.Green;
}
else
{
e.ExceptionHandled = true;
labelMessage.Text = "Delete Not successful. ";
if (e.Exception != null) labelMessage.Text += e.Exception.Message;
labelMessage.ForeColor = System.Drawing.Color.Red;
}
}
protected void buttonFilter_Click(object sender, EventArgs e)
{
gridViewEmployees.DataBind();
}
}
代码
<%@ Page Language="C#" MasterPageFile="~/master/default.master" AutoEventWireup="true"
CodeFile="listing-page.aspx.cs" Inherits="Code_Sample_Listing_Page" Title="Employee Listing Page" %>
<%@ Register Assembly="App_Code" Namespace="Utilities" TagPrefix="CustomControl" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceholder1" runat="Server">
<table id="tblOuter" class="contentcontainerTBL" summary="table1 summary info" width="100%">
<caption>
</caption>
<thead>
<tr>
<th class="invisible" title="Outer table Header">
</th>
</tr>
</thead>
<tr>
<td>
<br />
<p class="tblHeaderTitleSize">
Employees
</p>
<p>
In this page you will be able to view the list of all employess. Click on the appropriate
buttons to view, insert or update an employee.
</p>
</td>
</tr>
<tr>
<td>
Employee:
<asp:DropDownList ID="dropDownListEmployee" runat="server" AppendDataBoundItems="true"
DataSourceID="odsEmployeeList" DataTextField="FirstName" DataValueField="EmployeeId"
EnableViewState="false">
<asp:ListItem Text="All" Value=""></asp:ListItem>
</asp:DropDownList>
<asp:ObjectDataSource ID="odsEmployeeList" runat="server" TypeName="Entity.Employee"
EnableViewState="true" SelectMethod="SelectAllEmployees" />
<asp:Button runat="server" Text="Filter" ID="buttonFilter" CssClass="button-search"
AccessKey="f" Width="75px" OnClick="buttonFilter_Click" />
</td>
</tr>
<tr class="spacerrowTBL">
<td>
<asp:Label EnableViewState="false" runat="server" ID="labelMessage"></asp:Label>
</td>
</tr>
<tr>
<td>
<table id="tblInner" class="uirowcontainerTBL" summary="table2 summary">
<caption>
</caption>
<thead>
<tr>
<th class="invisible" title="inner table Header">
</th>
</tr>
</thead>
<tr>
<td>
<asp:GridView ID="gridViewEmployees" runat="server" SkinID="GridView" DataSourceID="odsOrderDetails"
DataKeyNames="EmployeeId" AllowPaging="True" BorderWidth="1px" BorderStyle="Solid"
OnRowCommand="GridViewEmployees_RowCommand" OnRowDataBound="GridViewEmployees_RowDataBound"
UseAccessibleHeader="False">
<Columns>
<asp:BoundField DataField="FirstName" HeaderText="First Name" ReadOnly="True" SortExpression="Title" />
<asp:BoundField DataField="LastName" HeaderText="Last Name" ReadOnly="True" SortExpression="Description" />
<asp:BoundField DataField="Country" HeaderText="Country" ReadOnly="True" SortExpression="Url" />
<asp:TemplateField>
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:ImageButton ID="lnbView" AlternateText="view" ImageUrl="~/image/view_icon.gif"
runat="server" CommandName="cmdView" />
</ItemTemplate>
<HeaderTemplate>
View
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:ImageButton ID="lnbEdit" AlternateText="edit" ImageUrl="~/image/edit_icon.gif"
runat="server" CommandName="cmdEdit" />
</ItemTemplate>
<HeaderTemplate>
Edit
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:ImageButton ID="lnbDelete" AlternateText="abc" ImageUrl="~/image/ico_delete2.gif"
runat="server" CommandName="cmdDelete" />
</ItemTemplate>
<HeaderTemplate>
Delete
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkEmployeeSelector" />
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox runat="server" ID="chkSelectAll" />
</HeaderTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="7" style="padding-left: 140px">
<asp:Button ID="buttonAdd" AccessKey="a" runat="server" Text="Add Employee" SkinID="AspButton"
OnClientClick="enableField" OnClick="ButtonAdd_Click" />
<asp:Button AccessKey="d" OnClientClick="return confirm('Are you sure you want to delete all items?');"
runat="server" ID="buttonDeleteSelected" Text="Delete Selected" SkinID="AspButton"
OnClick="ButtonDeleteSelected_Click" />
</td>
</tr>
</table>
<asp:ObjectDataSource ID="odsOrderDetails" runat="server" TypeName="Entity.Employee"
DeleteMethod="DeleteEmployee" SelectMethod="GetEmployeesByReportsToPaged" SelectCountMethod="GetEmployeesByReportsToPagedCount"
SortParameterName="orderby" MaximumRowsParameterName="maximumRows" StartRowIndexParameterName="startRowIndex"
EnablePaging="True" OnDeleted="odsOrderDetails_Deleted">
<SelectParameters>
<asp:ControlParameter Name="reportsTo" ControlID="dropDownListEmployee" />
<asp:Parameter Name="orderBy" Type="String" />
<asp:Parameter Name="startRowIndex" Type="Int32" />
<asp:Parameter Name="maximumRows" Type="Int32" />
</SelectParameters>
<DeleteParameters>
<asp:ControlParameter ControlID="gridViewEmployees" Name="employeeId" />
</DeleteParameters>
</asp:ObjectDataSource>
</asp:Content>