程序中常用的种代码

  1. 打开新的窗口并传送参数:

  传送参数:

  response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")

  接收参数:

  string a = Request.QueryString("id");

  string b = Request.QueryString("id1");

  

  2.为按钮添加对话框

  Button1.Attributes.Add("onclick","return confirm('确认?')");

  button.attributes.add("onclick","if(confirm('are you sure...?')){return true;}else{return false;}")

  

  3.删除表格选定记录

  int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];

  string deleteCmd = "DELETE from Employee where emp_id = " + intEmpID.ToString()

  

  4.删除表格记录警告

  private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs e)

  {

   switch(e.Item.ItemType)

   {

  case ListItemType.Item :

  case ListItemType.AlternatingItem :

  case ListItemType.EditItem:

   TableCell myTableCell;

   myTableCell = e.Item.Cells[14];

   LinkButton myDeleteButton ;

   myDeleteButton = (LinkButton)myTableCell.Controls[0];

   myDeleteButton.Attributes.Add("onclick","return confirm('您是否确定要删除这条信息');");

   break;

  default:

   break;

   }

  }

  

  5.点击表格行链接另一页

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

  {

   //点击表格打开

   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

  e.Item.Attributes.Add("onclick","window.open('Default.aspx?id=" + e.Item.Cells[0].Text + "');");

  }

  双击表格连接到另一页

  在itemDataBind事件中

  if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

  {

   string OrderItemID =e.item.cells[1].Text;

   ...

   e.item.Attributes.Add("ondblclick", "location.href='../ShippedGrid.aspx?id=" + OrderItemID + "'");

  }

  

  双击表格打开新一页

  if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

  {

   string OrderItemID =e.item.cells[1].Text;

   ...

   e.item.Attributes.Add("ondblclick", "open('../ShippedGrid.aspx?id=" + OrderItemID + "')");

  }

  6.表格超连接列传递参数

  <asp:HyperLinkColumn Target="_blank" headertext="ID号" DataTextField="id" NavigateUrl="aaa.aspx?id='

   <%# DataBinder.Eval(Container.DataItem, "数据字段1")%>' & name='<%# DataBinder.Eval(Container.DataItem, "数据字段2")%>' />

  

  7.表格点击改变颜色

  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='';");

  }

  8.关于日期格式

  日期格式设定

  DataFormatString="{0:yyyy-MM-dd}"

  我觉得应该在itembound事件中

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

  9.获取错误信息并到指定页面

  不要使用Response.Redirect,而应该使用Server.Transfer

  e.g

  // in global.asax

  protected void Application_Error(Object sender, EventArgs e) {

  if (Server.GetLastError() is HttpUnhandledException)

  Server.Transfer("MyErrorPage.aspx");

  //其余的非HttpUnhandledException异常交给ASP.NET自己处理就okay了 :)

  }

  Redirect会导致post-back的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理

  10.清空Cookie

  Cookie.Expires=[DateTime];

  Response.Cookies("UserName").Expires = 0

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

    }

    strBuilder.Append(ex.Message).Append("\r\n").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

  }