在页面上用RadioButtonList控件,HTML代码如下:

<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="LoginLog.aspx.cs" Inherits="Admin_LoginLog"
StylesheetTheme="Default" Theme="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>登录日志</title>
</head>
<body>
<form id="form1" runat="server">
<fieldset>
<legend>相关设置</legend>
<div id="tabsF">
<ul>
<li><a href="Default.aspx" title="返回"><span>返回</span></a></li>
</ul>
</div>
</fieldset>
<fieldset>
<legend>登录日志</legend>
<!--注:此单选列表的值,不要轻易进行修改,
由于,它和后台类库有直接的关联,进行修改
可能会造成,不能正确地查询数据。
-->
<asp:RadioButtonList ID="rbtnLoginLog" runat="server" RepeatDirection="Horizontal"
AutoPostBack="True" OnSelectedIndexChanged="rbtnLoginLog_SelectedIndexChanged">
<asp:ListItem Value="0" Selected="True">今天</asp:ListItem>
<asp:ListItem Value="1">本周</asp:ListItem>
<asp:ListItem Value="2">本月</asp:ListItem>
<asp:ListItem Value="3">本年</asp:ListItem>
<asp:ListItem Value="4">全部</asp:ListItem>
</asp:RadioButtonList>
<asp:Button ID="btnOut" runat="server" Text="导出" OnClick="btnOut_Click" />
<asp:Button ID="btnDel" runat="server" Text="删除" OnClick="btnDel_Click" />
<asp:GridView ID="gvLoginLog" runat="server" AutoGenerateColumns="False" SkinID="Default_GridView">
<Columns>
<asp:BoundField DataField="LoginTime" HeaderText="登录时间" />
<asp:BoundField DataField="UserName" HeaderText="登录用户" />
<asp:BoundField DataField="LoginIP" HeaderText="登录地址" />
</Columns>
</asp:GridView>
</fieldset>
</form>
</body>
</html>
网页后面的页面代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Admin_LoginLog : System.Web.UI.Page

...{
public WebUtility.OutExcel myOut = new WebUtility.OutExcel();
WebUtility.SysUser user = new WebUtility.SysUser();
protected void Page_Load(object sender, EventArgs e)

...{
if (!Page.IsPostBack)

...{
//默认显示的日志是当天的
this.gvLoginLog.DataSource = user.DataSetLoginLog(WebUtility.SysUser.LoginLogType.today);
this.gvLoginLog.DataBind();
}
}

protected void rbtnLoginLog_SelectedIndexChanged(object sender, EventArgs e)

...{
//通过枚举,进行设置数据源
//注: 此数据源和枚举值和页面的selectedvalue值保持一致
this.gvLoginLog.DataSource = user.DataSetLoginLog((WebUtility.SysUser.LoginLogType)Convert.ToInt32(this.rbtnLoginLog.SelectedValue));
this.gvLoginLog.DataBind();
}
protected void btnDel_Click(object sender, EventArgs e)

...{
WebUtility.Define.MessageBox(this.Page,"您确定删除 "+this.rbtnLoginLog.SelectedItem.Text+" 的登录日志吗?");
//根据选择进行删除操作
user.DeleteLoginLog((WebUtility.SysUser.LoginLogType)Convert.ToInt32(this.rbtnLoginLog.SelectedValue));
//设置数据源,进行数据绑定
this.gvLoginLog.DataSource = user.DataSetLoginLog((WebUtility.SysUser.LoginLogType)Convert.ToInt32(this.rbtnLoginLog.SelectedValue));
this.gvLoginLog.DataBind();


}
protected void btnOut_Click(object sender, EventArgs e)

...{
//导出日志到Excel
System.Data.DataTable dt = user.DataSetLoginLog(WebUtility.SysUser.LoginLogType.all).Tables[0];
string DownloadPath = Server.MapPath(".") + "//" + string.Format("登录日志备份{0}.XLS",System.DateTime.Now.ToShortDateString());
//导出
this.myOut.Export(dt, DownloadPath);
//以下代码将 pdf 文件写入客户端浏览器。
Response.ClearContent();
Response.ClearHeaders();
//作为附件下载
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(DownloadPath));
Response.ContentType = "application/ms-excel";
Response.WriteFile(DownloadPath);
Response.Flush();
Response.Close();
//从磁盘删除导出的文件
System.IO.File.Delete(DownloadPath);
}
}
相关的后台类库代码如下:

/**//// <summary>
/// 登录日志类型
/// </summary>
public enum LoginLogType

...{today,week,month,year,all};

/**//// <summary>
/// 登陆日志
/// </summary>
/// <param name="log">登录日志类型</param>
/// <returns>数据集</returns>
public DataSet DataSetLoginLog(LoginLogType log)

...{
string strSql = "";
switch ((int)log)

...{
case 0:
strSql = "Select LoginTime,UserName,LoginIP From vw_Login_Users where datename(day,logintime) = datename(day,getdate())";
break;
case 1:
strSql="Select LoginTime,UserName,LoginIP From vw_Login_Users where datename(week,logintime) = datename(week,getdate())";
break;
case 2:
strSql="Select LoginTime,UserName,LoginIP From vw_Login_Users where datename(month,logintime) = datename(month,getdate())";
break;
case 3:
strSql="Select LoginTime,UserName,LoginIP From vw_Login_Users where datename(year,logintime) = datename(year,getdate())";
break;
case 4:
strSql = "Select LoginTime,UserName,LoginIP From vw_Login_Users";
break;
default:
strSql="Select LoginTime,UserName,LoginIP From vw_Login_Users where datename(day,logintime) = datename(day,getdate())";
break;
}
return base.ExecuteSQLDataSet(strSql, "loginlogtest");

}

/**//// <summary>
/// 删除登录日志
/// </summary>
/// <param name="logType">登录日志类型</param>
/// <returns>删除影响的行数</returns>
public int DeleteLoginLog(LoginLogType logType)

...{
string strSql = "";
switch ((int)logType)

...{
case 0:
strSql = "Delete From Login_Log where datename(day,logintime) = datename(day,getdate())";
break;
case 1:
strSql = "Delete From Login_Log where datename(week,logintime) = datename(week,getdate())";
break;
case 2:
strSql = "Delete From Login_Log where datename(month,logintime) = datename(month,getdate())";
break;
case 3:
strSql = "Delete From Login_Log where datename(year,logintime) = datename(year,getdate())";
break;
case 4:
strSql = "Delete From Login_Log";
break;
default:
strSql = "Delete From Login_Log where datename(day,logintime) = datename(day,getdate())";
break;
}
return base.ExecuteNonQuery(strSql, null);
}


































































































































































































以上实现方法,主要是利用枚举类型,将枚举类型的值和页面的RadioButtonList控件的Value值,设置同步,这样,当我们选择不同的类型时,通过后台的类库,获取不同的数据集。