21
.自定义异常处理
// 自定义异常处理类
using System;
using System.Diagnostics;
namespace MyAppException
{
/// <summary>
/// 从系统异常类ApplicationException继承的应用程序异常处理类。
/// 自动将异常内容记录到Windows NT/2000的应用程序日志
/// </summary>
public class AppException:System.ApplicationException
{
public AppException()
{
if (ApplicationConfiguration.EventLogEnabled)LogEvent( & quot;出现一个未知错误。 & quot;);
}
public AppException( string message)
{
LogEvent(message);
}
public AppException( string message,Exception innerException)
{
LogEvent(message);
if (innerException != null )
{
LogEvent(innerException.Message);
}
}
// 日志记录类
using System;
using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Threading;
namespace MyEventLog
{
/// <summary>
/// 事件日志记录类,提供事件日志记录支持
/// <remarks>
/// 定义了4个日志记录方法 (error, warning, info, trace)
/// </remarks>
/// </summary>
public class ApplicationLog
{
/// <summary>
/// 将错误信息记录到Win2000/NT事件日志中
/// <param name="message">需要记录的文本信息</param>
/// </summary>
public static void WriteError(String message)
{
WriteLog(TraceLevel.Error, message);
}
/// <summary>
/// 将警告信息记录到Win2000/NT事件日志中
/// <param name="message">需要记录的文本信息</param>
/// </summary>
public static void WriteWarning(String message)
{
WriteLog(TraceLevel.Warning, message);
}
/// <summary>
/// 将提示信息记录到Win2000/NT事件日志中
/// <param name="message">需要记录的文本信息</param>
/// </summary>
public static void WriteInfo(String message)
{
WriteLog(TraceLevel.Info, message);
}
/// <summary>
/// 将跟踪信息记录到Win2000/NT事件日志中
/// <param name="message">需要记录的文本信息</param>
/// </summary>
public static void WriteTrace(String message)
{
WriteLog(TraceLevel.Verbose, message);
}
/// <summary>
/// 格式化记录到事件日志的文本信息格式
/// <param name="ex">需要格式化的异常对象</param>
/// <param name="catchInfo">异常信息标题字符串.</param>
/// <retvalue>
/// <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para>
/// </retvalue>
/// </summary>
public static String FormatException(Exception ex, String catchInfo)
{
StringBuilder strBuilder = new StringBuilder();
if (catchInfo != String.Empty)
{
strBuilder.Append(catchInfo).Append( & quot;\r\n & quot;);
}
strBuilder.Append(ex.Message).Append( & quot;\r\n & quot;).Append(ex.StackTrace);
return strBuilder.ToString();
}
/// <summary>
/// 实际事件日志写入方法
/// <param name="level">要记录信息的级别(error,warning,info,trace).</param>
/// <param name="messageText">要记录的文本.</param>
/// </summary>
private static void WriteLog(TraceLevel level, String messageText)
{
try
{
EventLogEntryType LogEntryType;
switch (level)
{
case TraceLevel.Error:
LogEntryType = EventLogEntryType.Error;
break ;
case TraceLevel.Warning:
LogEntryType = EventLogEntryType.Warning;
break ;
case TraceLevel.Info:
LogEntryType = EventLogEntryType.Information;
break ;
case TraceLevel.Verbose:
LogEntryType = EventLogEntryType.SuccessAudit;
break ;
default :
LogEntryType = EventLogEntryType.SuccessAudit;
break ;
}
EventLog eventLog = new EventLog( & quot;Application & quot;, ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );
// 写入事件日志
eventLog.WriteEntry(messageText, LogEntryType);
}
catch {} // 忽略任何异常
}
} // class ApplicationLog
}
22 .Panel 横向滚动,纵向自动扩展
<asp:panel style =& quot;overflow - x:scroll;overflow - y:auto; & quot;>< / asp:panel>
23 .回车转换成Tab
( 1 )
<script language =& quot;javascript & quot; for =& quot;document & quot; event =& quot;onkeydown & quot;>
if ( event .keyCode == 13 & amp; & amp; event .srcElement.type != ’button’ & amp; & amp; event .srcElement.type != ’submit’ & amp; & amp; event .srcElement.type != ’reset’ & amp; & amp; event .srcElement.type != ’’ & amp; & amp; event .srcElement.type != ’textarea’);
event .keyCode = 9 ;
< / script>
( 2 ) // 当在有keydown事件的控件上敲回车时,变为tab
public void Tab(System.Web .UI.WebControls .WebControl webcontrol)
{
webcontrol.Attributes .Add ( & quot;onkeydown & quot;, & quot; if ( event .keyCode == 13 ) event .keyCode = 9 & quot;);
}
24 .DataGrid超级连接列
DataNavigateUrlField =& quot;字段名 & quot; DataNavigateUrlFormatString =& quot;http: // xx/inc/delete.aspx?ID={0}"
25 .DataGrid行随鼠标变色
private void DGzf_ItemDataBound( object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Header)
{
e.Item.Attributes.Add( & quot;onmouseout & quot;, & quot; this .style.backgroundColor = \ & quot; & quot; + e.Item.Style[ & quot;BACKGROUND - COLOR & quot;] +& quot;\ & quot; & quot;);
e.Item.Attributes.Add( & quot;onmouseover & quot;, & quot; this .style.backgroundColor = \ & quot; & quot; + & quot;#EFF3F7 & quot; +& quot;\ & quot; & quot;);
}
}
26 .模板列
<ASP:TEMPLATECOLUMN visible =& quot;False & quot; sortexpression =& quot;demo & quot;
headertext =& quot;ID & quot;>
<ITEMTEMPLATE>
<ASP LABEL text = ’< % # DataBinder.Eval(Container.DataItem,
& quot;ArticleID & quot;) % >’ runat =& quot;server & quot; width =& quot; 80 %& quot;
id =& quot;lblColumn & quot; / >
< / ITEMTEMPLATE>
< / ASP:TEMPLATECOLUMN>
<ASP:TEMPLATECOLUMN headertext =& quot;选中 & quot;>
<HEADERSTYLE wrap =& quot;False & quot; horiz>< / HEADERSTYLE>
<ITEMTEMPLATE>
<ASP:CHECKBOX id =& quot;chkExport & quot; runat =& quot;server & quot; / >
< / ITEMTEMPLATE>
<EDITITEMTEMPLATE>
<ASP:CHECKBOX id =& quot;chkExportON & quot; runat =& quot;server & quot;
enabled =& quot; true & quot; / >
< / EDITITEMTEMPLATE>
< / ASP:TEMPLATECOLUMN>
后台代码
protected void CheckAll_CheckedChanged( object sender, System.EventArgs e)
{
// 改变列的选定,实现全选或全不选。
CheckBox chkExport ;
if ( CheckAll.Checked)
{
foreach (DataGridItem oDataGridItem in MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl( & quot;chkExport & quot;);
chkExport.Checked = true ;
}
}
else
{
foreach (DataGridItem oDataGridItem in MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl( & quot;chkExport & quot;);
chkExport.Checked = false ;
}
}
}
// 自定义异常处理类
using System;
using System.Diagnostics;
namespace MyAppException
{
/// <summary>
/// 从系统异常类ApplicationException继承的应用程序异常处理类。
/// 自动将异常内容记录到Windows NT/2000的应用程序日志
/// </summary>
public class AppException:System.ApplicationException
{
public AppException()
{
if (ApplicationConfiguration.EventLogEnabled)LogEvent( & quot;出现一个未知错误。 & quot;);
}
public AppException( string message)
{
LogEvent(message);
}
public AppException( string message,Exception innerException)
{
LogEvent(message);
if (innerException != null )
{
LogEvent(innerException.Message);
}
}
// 日志记录类
using System;
using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Threading;
namespace MyEventLog
{
/// <summary>
/// 事件日志记录类,提供事件日志记录支持
/// <remarks>
/// 定义了4个日志记录方法 (error, warning, info, trace)
/// </remarks>
/// </summary>
public class ApplicationLog
{
/// <summary>
/// 将错误信息记录到Win2000/NT事件日志中
/// <param name="message">需要记录的文本信息</param>
/// </summary>
public static void WriteError(String message)
{
WriteLog(TraceLevel.Error, message);
}
/// <summary>
/// 将警告信息记录到Win2000/NT事件日志中
/// <param name="message">需要记录的文本信息</param>
/// </summary>
public static void WriteWarning(String message)
{
WriteLog(TraceLevel.Warning, message);
}
/// <summary>
/// 将提示信息记录到Win2000/NT事件日志中
/// <param name="message">需要记录的文本信息</param>
/// </summary>
public static void WriteInfo(String message)
{
WriteLog(TraceLevel.Info, message);
}
/// <summary>
/// 将跟踪信息记录到Win2000/NT事件日志中
/// <param name="message">需要记录的文本信息</param>
/// </summary>
public static void WriteTrace(String message)
{
WriteLog(TraceLevel.Verbose, message);
}
/// <summary>
/// 格式化记录到事件日志的文本信息格式
/// <param name="ex">需要格式化的异常对象</param>
/// <param name="catchInfo">异常信息标题字符串.</param>
/// <retvalue>
/// <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para>
/// </retvalue>
/// </summary>
public static String FormatException(Exception ex, String catchInfo)
{
StringBuilder strBuilder = new StringBuilder();
if (catchInfo != String.Empty)
{
strBuilder.Append(catchInfo).Append( & quot;\r\n & quot;);
}
strBuilder.Append(ex.Message).Append( & quot;\r\n & quot;).Append(ex.StackTrace);
return strBuilder.ToString();
}
/// <summary>
/// 实际事件日志写入方法
/// <param name="level">要记录信息的级别(error,warning,info,trace).</param>
/// <param name="messageText">要记录的文本.</param>
/// </summary>
private static void WriteLog(TraceLevel level, String messageText)
{
try
{
EventLogEntryType LogEntryType;
switch (level)
{
case TraceLevel.Error:
LogEntryType = EventLogEntryType.Error;
break ;
case TraceLevel.Warning:
LogEntryType = EventLogEntryType.Warning;
break ;
case TraceLevel.Info:
LogEntryType = EventLogEntryType.Information;
break ;
case TraceLevel.Verbose:
LogEntryType = EventLogEntryType.SuccessAudit;
break ;
default :
LogEntryType = EventLogEntryType.SuccessAudit;
break ;
}
EventLog eventLog = new EventLog( & quot;Application & quot;, ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );
// 写入事件日志
eventLog.WriteEntry(messageText, LogEntryType);
}
catch {} // 忽略任何异常
}
} // class ApplicationLog
}
22 .Panel 横向滚动,纵向自动扩展
<asp:panel style =& quot;overflow - x:scroll;overflow - y:auto; & quot;>< / asp:panel>
23 .回车转换成Tab
( 1 )
<script language =& quot;javascript & quot; for =& quot;document & quot; event =& quot;onkeydown & quot;>
if ( event .keyCode == 13 & amp; & amp; event .srcElement.type != ’button’ & amp; & amp; event .srcElement.type != ’submit’ & amp; & amp; event .srcElement.type != ’reset’ & amp; & amp; event .srcElement.type != ’’ & amp; & amp; event .srcElement.type != ’textarea’);
event .keyCode = 9 ;
< / script>
( 2 ) // 当在有keydown事件的控件上敲回车时,变为tab
public void Tab(System.Web .UI.WebControls .WebControl webcontrol)
{
webcontrol.Attributes .Add ( & quot;onkeydown & quot;, & quot; if ( event .keyCode == 13 ) event .keyCode = 9 & quot;);
}
24 .DataGrid超级连接列
DataNavigateUrlField =& quot;字段名 & quot; DataNavigateUrlFormatString =& quot;http: // xx/inc/delete.aspx?ID={0}"
25 .DataGrid行随鼠标变色
private void DGzf_ItemDataBound( object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Header)
{
e.Item.Attributes.Add( & quot;onmouseout & quot;, & quot; this .style.backgroundColor = \ & quot; & quot; + e.Item.Style[ & quot;BACKGROUND - COLOR & quot;] +& quot;\ & quot; & quot;);
e.Item.Attributes.Add( & quot;onmouseover & quot;, & quot; this .style.backgroundColor = \ & quot; & quot; + & quot;#EFF3F7 & quot; +& quot;\ & quot; & quot;);
}
}
26 .模板列
<ASP:TEMPLATECOLUMN visible =& quot;False & quot; sortexpression =& quot;demo & quot;
headertext =& quot;ID & quot;>
<ITEMTEMPLATE>
<ASP LABEL text = ’< % # DataBinder.Eval(Container.DataItem,
& quot;ArticleID & quot;) % >’ runat =& quot;server & quot; width =& quot; 80 %& quot;
id =& quot;lblColumn & quot; / >
< / ITEMTEMPLATE>
< / ASP:TEMPLATECOLUMN>
<ASP:TEMPLATECOLUMN headertext =& quot;选中 & quot;>
<HEADERSTYLE wrap =& quot;False & quot; horiz>< / HEADERSTYLE>
<ITEMTEMPLATE>
<ASP:CHECKBOX id =& quot;chkExport & quot; runat =& quot;server & quot; / >
< / ITEMTEMPLATE>
<EDITITEMTEMPLATE>
<ASP:CHECKBOX id =& quot;chkExportON & quot; runat =& quot;server & quot;
enabled =& quot; true & quot; / >
< / EDITITEMTEMPLATE>
< / ASP:TEMPLATECOLUMN>
后台代码
protected void CheckAll_CheckedChanged( object sender, System.EventArgs e)
{
// 改变列的选定,实现全选或全不选。
CheckBox chkExport ;
if ( CheckAll.Checked)
{
foreach (DataGridItem oDataGridItem in MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl( & quot;chkExport & quot;);
chkExport.Checked = true ;
}
}
else
{
foreach (DataGridItem oDataGridItem in MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl( & quot;chkExport & quot;);
chkExport.Checked = false ;
}
}
}
文章出处:http://topic.csdn.net/u/20080916/12/e16bf1c5-9344-4e03-83aa-bd4ebd84f6ad.html