动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET实例
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ ASP.NET实例 ]的信息

本月文章推荐
.创建基于ASP.NET的SMTP邮件服务.
.数独解算器(ASP.NET 2.0) .
.DotNet Form间数据传递.
.C#版的网站新闻发布系统.
.ASP.NET中动态修改web.config中的.
.用Asp.net实现基于XML的留言簿之.
.在ASP.NET下实现数字和字符相混合.
.asp.net中调用Office来制作3D统计.
.asp.net上传图片并同时生成缩略图.
.用Asp.net实现基于XML的留言簿之.
.保存美丽记忆 用ASP.NET创建网络.
.根据IP获取当地天气预报的实现.
.asp.net 实现“九连环”小游戏.
.检测是否还有黑客代码的asp.net函.
.用ASP.NET实现一个简单的计算器(.
.用ASP.NET建立一个在线RSS新闻聚.
.ASP.NET中的状态管理.
.如何在删除并重新安装 IIS 之后修.
.ASP.NET实现用户在线检测的类源码.
.支付宝接口(刚完成,应该是目前.

使用ASP.NET 顯示事件日誌紀錄

发表日期:2003-12-29 |


在 Windows 2000 (或 NT) 的事件日誌對管理者來說可說是最重要的訊息來源,因為所有的發生的事件都會紀錄在那裡 ─ 從成功到嚴重性的失敗。由於是如此的重要,那麼要是能夠透過 web 來使用,可不是更能突顯嗎?

大家應該對事件檢視器不會陌生,在這篇文章我將說明如何使用 ASP.NET 和 .NET Framework SDK 能夠完美地仿效列出日誌。為了讓讀者作為練習,我先保留對於網頁呈現詳細紀錄細節的建置。

使用這篇文章的原始碼在你的 Webserver 上必須安裝 Microsoft .NET Framework SDK。 同時我也假設讀者對 C# 程式有一定程度的認識。

暴力手段法

為了能更迅速且又不是那麼的乾淨俐落手段,我們可以好好利用過去對 ASP 的知識來產生一系列事件。(即使是 table,雖然這個範例並不是要做 table)。程式的名稱也就是這個玩意的名稱: simple.aspx.

<% @Page Language="C#" %>
<% @Import Namespace="System.Diagnostics" %>
<%
EventLog aLog = new EventLog();
aLog.Log = "System";
aLog.MachineName = ".";  // Local machine
string strImage = "";  // Icon for the event

Response.Write("<p>There are  " + aLog.Entries.Count + 
         " entries in the System event log.</p>");
		   
foreach (EventLogEntry entry in aLog.Entries) 
{
  switch (entry.EntryType)
  {
    case EventLogEntryType.Warning:
      strImage = "warning.png";
      break;
    case EventLogEntryType.Error:
      strImage = "error.png";
      break;
    default:
      strImage = "info.png";
      break;
  }
  Response.Write("<img src=\"" + strImage + "\">&nbsp;|&nbsp;");
  Response.Write(entry.TimeGenerated.ToString() + "&nbsp;|&nbsp;");
  Response.Write(entry.Source + "&nbsp;|&nbsp;");
  Response.Write(entry.EventID.ToString() + "<br>\r\n");
}
%>

事件日誌的類別可以在這個名稱空間找到 System.Diagnostics,必須將它放在網頁開始的地方。打開日誌本身就是很直接: 產生新的 EventLog 物件, 指明 LogMachineName ("." 是本地端的機器)。然後我們就準備讀取事件日誌。

我們使用 foreach 迴圈來完成這個工作。為使呈現不會那麼的缺乏創意,我在每一個紀錄錢都放一個正確的圖案,列出的紀錄與檢視器一般的順序相反: 過去的紀錄會列為最優先。

使用 DataGrid 更完美

在 ASP.NET 中有許多的創新,特別是在資料的展示,而且更棒的是資料並不一定要來自資料庫中。對 DataGrid Web Control 也是如此,也就如其名稱一樣,從資料中產生 table (grid)。唯一需求視資料來源必須是支援 ICollection 介面 ─ 也就是使用 EventLog 的集合 Entries

以下的原始碼 (speccolsonly.aspx) 說明了使用 DataGrid 是如此的簡單:

<% @Page Language="C#" %>
<% @Import Namespace="System.Diagnostics" %>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e) 
{
  EventLog aLog = new EventLog();
  aLog.Log = "System";
  aLog.MachineName = ".";
  
  LogGrid.DataSource = aLog.Entries;
  LogGrid.DataBind();
}
</script>

DataGrid 控制項 (接下來的程式) 只包含格式化的指令,沒有其他。Grid 是藉由 Page_Load 事件來填補進去,就這樣打開了事件日誌,然後分配 Entries (紀錄) 作為 DataGrid 的 DataSource 屬性。隨著呼叫 DataBind 資料就湧進了 table 中 ─ 但是我們只用到欄位,如下複製圖像所示:

這樣的限制完成工作都是在 DataGrid 本身的標籤 (speccolsonly.aspx 包含完整程式碼):

<form runat="server">
<asp:DataGrid id="LogGrid" runat="server"
    BorderColor="black"
    BorderWidth="1"
    GridLines="Both"
    CellPadding="3"
    CellSpacing="0"
    Font-Name="Verdana"
    Font-Size="8pt"
    HeaderStyle-BackColor="#aaaadd"
    AutoGenerateColumns="false">
    <Columns>
      <asp:BoundColumn HeaderText="TOF" DataField="EntryType" />
      <asp:BoundColumn HeaderText="Date/Time" DataField="TimeGenerated"/>
      <asp:BoundColumn HeaderText="Source" DataField="Source"/>
      <asp:BoundColumn HeaderText="Event ID" DataField="EventID"/>
    </Columns>
</asp:DataGrid>
</form>

首要的步驟就是設定 AutoGenerateColumns 屬性為 false,這樣一來可避免自動顯示所有屬性。現在我們藉可以指明我們所要的欄位。

我使用了四個繫結欄位 (繫結到資料來源),HeaderText 會呈現在最上一列,而在 DataField 中會讀取屬性來填入所給予的欄位中。

範例中我故意將欄位的設定用得簡單一點。還有許多的欄位型態,而當你開始會使用格式化來把玩欄位時,對設計者來說倒是可以讓你 "瘋狂似的" 好好玩一玩呢!你可以在 QuickStart tutorial 找到更多的範例。

 

DataGrid 中使用分頁

為了完成工作,我使用另一個 DataGrid 特色,DB 程式設計師應該都很熟識 ─ 分頁。DataGrid 的好處就是分頁幾乎不會用到任何的程式碼,看起來就像這樣:

這一次我將整個原始碼 paging.aspx 放進文章中方便閱讀:

<% @Page Language="C#" %>
<% @Import Namespace="System.Diagnostics" %>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e) 
{
  BindGrid();
}

void LogGrid_Change(Object sender, DataGridPageChangedEventArgs e) 
{
  // Set CurrentPageIndex to the page the user clicked.
  LogGrid.CurrentPageIndex = e.NewPageIndex;

  // Rebind the data. 
  BindGrid();
}
 
void BindGrid() 
{
  EventLog aLog = new EventLog();
  aLog.Log = "System";
  aLog.MachineName = ".";
  
  LogGrid.DataSource = aLog.Entries;
  LogGrid.DataBind();
}
</script>
<body bgcolor="#ffffff">

<h3>System Event Log</h3>

<form runat="server">
<asp:DataGrid id="LogGrid" runat="server"
    AllowPaging="True"
    PageSize="10"
    PagerStyle-Mode="NumericPages"
    PagerStyle-HorizontalAlign="Right"
    PagerStyle-NextPageText="Next"
    PagerStyle-PrevPageText="Prev"
    OnPageIndexChanged="LogGrid_Change"
    BorderColor="black"
    BorderWidth="1"
    GridLines="Both"
    CellPadding="3"
    CellSpacing="0"
    Font-Name="Verdana"
    Font-Size="8pt"
    HeaderStyle-BackColor="#aaaadd"
    AutoGenerateColumns="false">
    <Columns>
      <asp:BoundColumn HeaderText="TOF" DataField="EntryType" />
      <asp:BoundColumn HeaderText="Date/Time" DataField="TimeGenerated"/>
      <asp:BoundColumn HeaderText="Source" DataField="Source"/>
      <asp:BoundColumn HeaderText="Event ID" DataField="EventID"/>
    </Columns>
</asp:DataGrid>
</form>

</body>
</html>

首要的改變可在 DataGrid 控制項上找到:

AllowPaging="True"
PageSize="10"
PagerStyle-Mode="NumericPages"
PagerStyle-HorizontalAlign="Right"
PagerStyle-NextPageText="Next"
PagerStyle-PrevPageText="Prev"
OnPageIndexChanged="LogGrid_Change"

二個最重要的屬性分別在第一列和最後一列: AllowPagingOnPageIndexChanged。 第一列代表分頁,最後一列代表當更換到另一頁時會觸發事件方法。其他的屬性都只是裝飾性質。

由於這個範例我們所使用的是集合而不是資料庫提供的資料,我使用得很簡單: 我只是將資料繫結至 grid 中。為了更好的執行效能 ─ 特別是對資料庫來說 ─ 在這個 "小程式" 中資料會被重新載入。

結論

今天文章真正的目的並不是完全在於事件日誌,而是在說明 DataGrid 的使用非常多樣化,而不是僅止於應用程式上資料庫程式設計上的欄位而已。有許多的功能可以使用,然而,要編輯事件日誌紀錄 (唯讀) 就沒有什麼意義,當然也就不能使用了這個功能了。

上一篇:ASP.net随机数应用实例 人气:12412
下一篇:隨心所欲產生圖案 人气:10834
浏览全部ASP.NET的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-7 站长中国企业(公司)网站系统 v4.2
2008-9-7 PBDigg v2.0 Build 20080821
2008-9-7 玩玩小游戏FLASH系统 v2.1
2008-9-7 522QQ在线电视直播程序 v1.1
2008-9-7 Pcook cms 文章管理系统 (老Y CM
2008-9-7 仿代码小说小偷系统 v1.0
2008-9-7 百度一搜集成搜索管理系统
2008-9-7 小贤统计器 v1.0
2008-9-6 Movie34电影搜索引擎 v3.0
2008-9-7 iBlacklist通话黑名单汉化破解补
2008-9-7 EndlessWalls无尽壁纸 v1.0.4破解
2008-9-7 Dynolicious车载测量仪v1.1破解版
2008-9-7 iVoodoo巫毒娃娃1.0.1破解版
2008-9-7 iWallpape精品墙纸1.2破解版
2008-9-7 iChillout自然音效工具1.1破解版
2008-9-7 Todo计划提醒1.2破解版
2008-9-7 allRadio电台集合1.01破解版
2008-9-7 My Money个人理财1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵