我的位置: 主页 > 学习专区 > .NET技术 > > ASP.NET开发常用技巧收集 (二)

ASP.NET开发常用技巧收集 (二)

2013-12-13 13:08北大青鸟锦江天府学院
[导读] 11.自定义异常处理 //自定义异常处理类 using System; using System.Diagnostics; namespace MyAppException { /**//// summary /// 从系统异常类ApplicationException继承的应用程序异常处理类。 /// 自动将异常内容


      11.自定义异常处理

//自定义异常处理类

using System;

using System.Diagnostics;

namespace MyAppException

{

/**//// <summary>

/// 从系统异常类ApplicationException继承的应用程序异常处理类。

/// 自动将异常内容记录到Windows NT/2000的应用程序日志

/// </summary>

public class AppException:System.ApplicationException

{

public AppException()

{

 if (ApplicationConfiguration.EventLogEnabled)

  LogEvent("出现一个未知错误。");

}

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(" ");

 }

 strBuilder.Append(ex.Message).Append(" ").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("Application", ApplicationConfiguration.EventLogMachineName,         ApplicationConfiguration.EventLogSourceName );

  //写入事件日志

  eventLog.WriteEntry(messageText, LogEntryType);

 

 }

 catch {} //忽略任何异常

}    

} //class ApplicationLog

}

12.Panel 横向滚动,纵向自动扩展

<asp:panel  style="overflow-x:scroll;overflow-y:auto;"></asp:panel>

13.回车转换成Tab

<s cript language="javas cript" for="document" event="onkeydown">

if(event.keyCode==13 && event.srcElement.type!='button' &&

event.srcElement.type!='submit' && event.srcElement.type!='reset'

&& event.srcElement.type!=''&& event.srcElement.type!='textarea');

event.keyCode=9;

</s cript>

onkeydown="if(event.keyCode==13) event.keyCode=9"

http://dotnet.aspx.cc/exam/enter2tab.aspx

14.DataGrid超级连接列

DataNavigateUrlField="字段名" DataNavigateUrlformatString="http://xx/inc/delete.aspx?ID={0}"

15.DataGrid行随鼠标变色

private void DGzf_ItemDataBound

(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

{

 if (e.Item.ItemType!=ListItemType.Header)

 {

  e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=

""+e.Item.style["BACKGROUND-COLOR"]+""");

  e.Item.Attributes.Add( "onmouseover","this.style.backgroundColor=""+ "#EFF3F7"+""");

 }  

}

16.模板列

<ASP:TEMPLATECOLUMN visible="False" sortexpression="demo" headertext="ID">

<ITEMTEMPLATE>

<ASP:LABEL text='<%# DataBinder.Eval(Container.DataItem,

"ArticleID")%>' runat="server" width="80%" id="lblColumn" />

</ITEMTEMPLATE>

</ASP:TEMPLATECOLUMN>

<ASP:TEMPLATECOLUMN headertext="选中">

<HEADERstyle wrap="False" horizontalalign="Center"></HEADERstyle>

<ITEMTEMPLATE>

<ASP:CHECKBOX id="chkExport" runat="server" />

</ITEMTEMPLATE>

<EDITITEMTEMPLATE>

<ASP:CHECKBOX id="chkExportON" runat="server" enabled="true" />

</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("chkExport");

   chkExport.Checked = true;

  }

 }

 else

 {

  foreach(DataGridItem oDataGridItem in MyDataGrid.Items)

  {

   chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");

   chkExport.Checked = false;

  }

 }

}

17.数字格式化

【<%#Container.DataItem("price")%>的结果是500.0000,怎样格式化为500.00?】

<%#Container.DataItem("price","{0:¥#,##0.00}")%>

int i=123456;

string s=i.ToString("###,###.00");

18.日期格式化

【aspx页面内:<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date")%>

显示为: 2004-8-11 19:44:28

我只想要:2004-8-11 】

<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%>

应该如何改?

【格式化日期】

取出来,一般是object

((DateTime)objectFromDB).ToString("yyyy-MM-dd");

【日期的验证表达式】

A.以下正确的输入格式: [2004-2-29], [2004-02-29 10:29:39 pm], [2004/12/31]

^((d{2}(([02468][048])|([13579][26]))[-/s]?((((0?[13578])|(1[02]))

[-/s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|

([1-2][0-9])|(30)))|(0?2[-/s]?((0?[1-9])|([1-2][0-9])))))|(d{2}(([02468]

[1235679])|([13579][01345789]))[-/s]?((((0?[13578])|(1[02]))[-/s]

?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|

([1-2][0-9])|(30)))|(0?2[-/s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))

(s(((0?[1-9])|(1[0-2])):([0-5][0-9])((s)|(:([0-5][0-9])s))

([AM|PM|am|pm]{2,2})))?$

B.以下正确的输入格式:[0001-12-31], [9999 09 30], [2002/03/03]

^d{4}[-/s]?((((0[13578])|(1[02]))[-/s]?(([0-2][0-9])|(3[01])))|

(((0[469])|(11))[-/s]?(([0-2][0-9])|(30)))|(02[-/s]?[0-2][0-9]))$

【大小写转换】

HttpUtility.HtmlEncode(string);

HttpUtility.HtmlDecode(string)

19.如何设定全局变量

  Global.asax中

  Application_Start()事件中

  添加Application[属性名] = xxx;

  就是你的全局变量

20.怎样作到HyperLinkColumn生成的连接后,点击连接,打开新窗口?

  HyperLinkColumn有个属性Target,将器值设置成"_blank"即可.(Target="_blank")

  【ASPNETMENU】点击菜单项弹出新窗口

  在你的menuData.xml文件的菜单项中加入URLTarget="_blank"

  如:

<?xml version="1.0" encoding="GB2312"?>

<MenuData ImagesBaseURL="images/">

<MenuGroup>

  <MenuItem Label="内参信息" URL="Infomation.aspx" >

    <MenuGroup ID="BBC">

      <MenuItem Label="公告信息"   URL="Infomation.aspx"

URLTarget="_blank"  LeftIcon="file.gif"/>

      <MenuItem Label="编制信息简报" URL="NewInfo.aspx" LeftIcon="file.gif" />

  最好将你的aspnetmenu升级到1.2版

热点专题
>>
相关文章推荐
>>
www.028bdqn.com/" title="北大青鸟证书" class="tagc1" target="_blank">北大青鸟证书 北大青鸟学历 华为 集体 班好 凤凰山 一峰 红树 林骑行 成功者 云景 清远北大青鸟 网页制作 文天祥 惠州北大青鸟 河源北大青鸟 梁*伟 秦*政 温*典 许*灿 珠海北大青鸟 林*涛 李*军 罗* 陈*标 雷* 王*轩 张*兴 温*华 苏*胜 廖*军 徐*凝 陈*昌