ASP.NET编程实例ABC(3)
点击次数:19 次 发布日期:2008-11-27 00:07:14 作者:源代码网
|
源代码网推荐 源代码网推荐 源代码网推荐 在 ASP.NET中显示事件日志记录 源代码网推荐 在Windows 2000 或 NT中,事件日志对于管理员来说几乎是最重要的信息来源,因为所有发生的事件都在那里进行记录,无论是成功的操作,还是灾难性的失败。既然如此,你是否想过让这些信息在Web上呈现出来? 是的,这是很有意义的事情。 源代码网推荐 我们都应该很熟悉下面的事件阅读器了,下面就示范如何使用AP.NET和.NET Framework SDK来美观、清晰地模仿其条目列表。我还给读者留下一个练习题,为一个条目的完整细节构造一个页面。 源代码网推荐 源代码网推荐 源代码网推荐 较粗笨的方法 源代码网推荐 如果必须又快又粗略地完成任务,那么完全可以利用ASP语言的相关技术来生成一个事件列表(甚至可以用表格,但是这个例子没有那样做)。程序的名字是 simple.aspx,代码如下: 源代码网推荐 <% @Page Language="C#" %> 源代码网推荐 <% @Import Namespace="System.Diagnostics" %> 源代码网推荐 <% 源代码网推荐 EventLog aLog = new EventLog(); 源代码网推荐 aLog.Log = "System"; 源代码网推荐 aLog.MachineName = "."; // Lokale Maschine 源代码网推荐 string strImage = ""; // Icon für das 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 + ""> | "); 源代码网推荐 Response.Write(entry.TimeGenerated.ToString() + " | "); 源代码网推荐 Response.Write(entry.Source + " | "); 源代码网推荐 Response.Write(entry.EventID.ToString() + "<br> "); 源代码网推荐 } 源代码网推荐 %> 源代码网推荐 事件日志类可以在名称空间System.Diagnostics(系统诊断)中找到,这一部分在页面的开始定义。打开日志本身很直观:创建一个新EventLog对象,指定Log 和 MachineName ("." 是本地机器的意思)。到此我们可以读取事件日志的内容了。 源代码网推荐 这将在一个 foreach循环中完成。我们在每个条目之前都放置一个图标,这样列表看起来就不至于那么平淡。另外,条目的列表顺序与通常的事件阅读器顺序相反:在这里,最老的条目列在最前面。 源代码网推荐 使用DataGrid来设计得更美观 源代码网推荐 ASP.NET带来了许多创新功能,尤其是在显示数据方面。比如,要显示的数据并不总是必须出自数据库。DataGrid Web Control 也是如此,正如其名称所示,它可以创建一个来自数据的表格或者栅格。唯一的前提是数据源要支持Icollection接口,而EventLog (事件日志)的Entries Collection(条目集合 )正是满足这一要求的。 源代码网推荐 以下的文件datagrid.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> 源代码网推荐 <body bgcolor="#ffffff"> 源代码网推荐 源代码网推荐 <h3>System Event Log</h3> 源代码网推荐 源代码网推荐 <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" 源代码网推荐 /> 源代码网推荐 </form> 源代码网推荐 源代码网推荐 </body> 源代码网推荐 </html> 源代码网推荐 DataGrid 控件 除了包含格式化指令外,什么也没有。Grid通过Page_Load 事件来填充,它打开事件日志,然后将DataGrid的DataSource属性指定为Entries(条目)。接着调用 DataBind方法,所有的数据就被填入到表格中。 源代码网推荐 数据量确实不小,因为 EventLogEntry 类有许多属性,而我们只想要一个简洁的概括。下一部分就将对此进行限定。 源代码网推荐 限定DataGrid中的字段 源代码网推荐 接着的目的是要显示某些特定的字段。在讨论代码前,我们先快速看一下执行后的结果: 源代码网推荐 源代码网推荐 源代码网推荐 从原则上说,这个结果与前面的例子非常相似,唯一的不同就是显示的栏数。这种限定是靠 DataGrid 标记本身进行的,文件speccolsonly.aspx 包含了全部实现代码: 源代码网推荐 <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"> 源代码网推荐 <property name="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"/> 源代码网推荐 </property> 源代码网推荐 </asp:DataGrid> 源代码网推荐 第一个重要步骤是将AutoGenerateColumns 属性设置为假,这样就可以防止显示所有属性。接着指定想要显示的栏目,在这里,我们指定了4个栏目。HeaderText显示在顶部行中,DataField给出填充这个栏目所要读取的属性。 源代码网推荐 在DataGrid中分页 源代码网推荐 在结束之前,我们还要使用 DataGrid 的另一个功能,也就是 数据库程序员的老相识-"分页"处理。DataGrid的优势在于处理分页几乎不需要代码。还是请先看一下执行后的结果: 源代码网推荐 源代码网推荐 源代码网推荐 请看paging.aspx文件的全部源代码: 源代码网推荐 <% @Page Language="C#" %> 源代码网推荐 <% @Assembly Name="System.Diagnostics" %> 源代码网推荐 <% @Import Namespace="System.Diagnostics" %> 源代码网推荐 <script language="C#" runat="server"> 源代码网推荐 void Page_Load(Object sender, EventArgs e) 源代码网推荐 { 源代码网推荐 BindGrid(); 源代码网推荐 } 源代码网推荐 void LogGrid_Page(Object sender, DataGridPageChangedEventArgs e) 源代码网推荐 { 源代码网推荐 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_Page" 源代码网推荐 BorderColor="black" 源代码网推荐 BorderWidth="1" 源代码网推荐 GridLines="Both" 源代码网推荐 CellPadding="3" 源代码网推荐 CellSpacing="0" 源代码网推荐 Font-Name="Verdana" 源代码网推荐 Font-Size="8pt" 源代码网推荐 HeaderStyle-BackColor="#aaaadd" 源代码网推荐 AutoGenerateColumns="false"> 源代码网推荐 <property name="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"/> 源代码网推荐 </property> 源代码网推荐 </asp:DataGrid> 源代码网推荐 </form> 源代码网推荐 </body> 源代码网推荐 </html> 源代码网推荐 我们可以看到,第一个变化在 DataGrid控件中: 源代码网推荐 AllowPaging="True" 源代码网推荐 PageSize="10" 源代码网推荐 PagerStyle-Mode="NumericPages" 源代码网推荐 PagerStyle-HorizontalAlign="Right" 源代码网推荐 PagerStyle-NextPageText="Next" 源代码网推荐 PagerStyle-PrevPageText="Prev" 源代码网推荐 OnPageIndexChanged="LogGrid_Page" 源代码网推荐 其中的两个最重要的属性是第一个和最后一个:AllowPaging和 OnPageIndexChanged。第一个激活分页功能,第二个指明当页面变化时所引起事件对应的方法。剩下的属性都是装饰性的。 源代码网推荐 当我们使用的是一个数据集合而不是数据库时,可以通过将数据重新捆绑在栅格上而使处理工作变得很容易。 源代码网推荐 小 结 源代码网推荐 以上介绍了在ASP.NET中如何阅读事件日志,但这不是主要目的,我们的意图是要说明DataGrid的使用是多么得广泛,这已经超出了数据库编程的主要应用领域。 源代码网推荐 结 语 源代码网推荐 以上通过3个实例的实现思路、原理以及具体代码示范了ASP.NET的实际应用。这3个例子都非常典型并且实用,我希望从这里起步,开始你的ASP.NET之神奇、强大的编程旅程。 源代码网推荐 源代码网供稿. |
