ASP.NET Web開發實用程式碼舉例(二)

iDotNetSpace發表於2009-01-20

1.表格超連線列傳遞引數

' & name='' />

2.表格點選改變顏色

if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
    e.Item.Attributes.Add("onclick","this.style.backgroundColor='#99cc00';
      this.style.color='buttontext';this.style.cursor='default';");
}

寫在DataGrid的_ItemDataBound裡

if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
    e.Item.Attributes.Add("onmouseover","this.style.backgroundColor='#99cc00';
    this.style.color='buttontext';this.style.cursor='default';");
    e.Item.Attributes.Add("onmouseout","this.style.backgroundColor='';this.style.color='';");
}

3.關於日期格式

日期格式設定

DataFormatString="{0:yyyy-MM-dd}"
我覺得應該在itembound事件中

e.items.cell["你的列"].text=DateTime.Parse(e.items.cell["你的列"].text.ToString("yyyy-MM-dd"))

4.獲取錯誤資訊併到指定頁面

不要使用Response.Redirect,而應該使用Server.Transfer

// in global.asax
protected void Application_Error(Object sender, EventArgs e) {
    if (Server.GetLastError() is HttpUnhandledException)
    Server.Transfer("MyErrorPage.aspx");//其餘的非HttpUnhandledException異常交給ASP.NET自己處理就okay了:)
}
其餘的非HttpUnhandledException異常交給ASP.NET自己處理就okay了。

Redirect會導致post-back的產生從而丟失了錯誤資訊,所以頁面導向應該直接在伺服器端執行,這樣就可以在錯誤處理頁面得到出錯資訊並進行相應的處理。

5.清空Cookie

Cookie.Expires=[DateTime];
Response.Cookies("UserName").Expires = 0

6.自定義異常處理

//自定義異常處理類 
using System;
using System.Diagnostics;
namespace MyAppException
{
    ///


    /// 從系統異常類ApplicationException繼承的應用程式異常處理類。
    /// 自動將異常內容記錄到Windows NT/2000的應用程式日誌
    ///

    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
{
///


/// 事件日誌記錄類,提供事件日誌記錄支援 
///
/// 定義了4個日誌記錄方法 (error, warning, info, trace) 
///

///

public class ApplicationLog
{
    ///
    /// 將錯誤資訊記錄到Win2000/NT事件日誌中
    /// 需要記錄的文字資訊
    ///

    public static void WriteError(String message){
        WriteLog(TraceLevel.Error, message);
    }

    ///


    /// 將警告資訊記錄到Win2000/NT事件日誌中
    /// 需要記錄的文字資訊
    ///

    public static void WriteWarning(String message){
        WriteLog(TraceLevel.Warning, message);
    }

    ///


    /// 將提示資訊記錄到Win2000/NT事件日誌中
    /// 需要記錄的文字資訊
    ///

    public static void WriteInfo(String message){
        WriteLog(TraceLevel.Info, message);
    }

    ///


    /// 將跟蹤資訊記錄到Win2000/NT事件日誌中
    /// 需要記錄的文字資訊
    ///

    public static void WriteTrace(String message){
        WriteLog(TraceLevel.Verbose, message);
    }

    ///


    /// 格式化記錄到事件日誌的文字資訊格式
    /// 需要格式化的異常物件
    /// 異常資訊標題字串.
    ///
    /// 格式後的異常資訊字串,包括異常內容和跟蹤堆疊.
    ///

    ///

    public static String FormatException(Exception ex, String catchInfo){
        StringBuilder strBuilder = new StringBuilder();
        if (catchInfo != String.Empty){
            strBuilder.Append(catchInfo).Append("\r\n");
        }
        strBuilder.Append(ex.Message).Append("\r\n").Append(ex.StackTrace);
        return strBuilder.ToString();
    }

    ///


    /// 實際事件日誌寫入方法
    /// 要記錄資訊的級別(error,warning,info,trace).
    /// 要記錄的文字.
    ///

    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
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-541542/,如需轉載,請註明出處,否則將追究法律責任。

相關文章