Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25202
  • 博文数量: 10
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-08 15:38
文章分类

全部博文(10)

文章存档

2011年(1)

2008年(9)

我的朋友

分类:

2008-10-08 16:10:16

asp.net最常用的三十三种编程代码

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

    
传送参数:
 
   response.write("")

    
接收参数:

   
 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 + "’)");
    }

    
  特别注意:【?id= 处不能为 ?id =

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

    
" 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
会导致postback的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理

    10.清空Cookie

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

     11.自定义异常处理

  
  //自定义异常处理类
    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
    }

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

   
 

      13.回车转换成Tab

    

    
 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;
    

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


    14.DataGrid超级连接列

  
 DataNavigateUrlField="字段名" DataNavigateUrlFormatString="{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">
    
    ’ runat="server" width="80%" id="lblColumn" />
    

    

    选中">
    
    
    
    

    
    
    

    

    
后台代码

  
  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",如:

  
  
    
    
    内参信息" URL="Infomation.aspx" >
    
    公告信息" URL="Infomation.aspx" URLTarget="_blank" LeftIcon="file.gif"/>
    编制信息简报" URL="NewInfo.aspx" LeftIcon="file.gif" />
    ......
21.读取DataGrid控件TextBox

  
  foreach(DataGrid dgi in yourDataGrid.Items)
    {
    
 TextBox tb = (TextBox)dgi.FindControl("yourTextBoxId");
    
 tb.Text....
    }

    23.DataGrid中有3个模板列包含Textbox分别为 DG_ShuLiang (数量) DG_DanJian(单价) DG_JinE(金额)分别在5.6.7列,要求在录入数量及单价的时候自动算出金额即:数量*单价=金额还要求录入时限制为 数值型.我如何用客户端脚本实现这个功能?

    
〖思归〗

   
 数量">
    
    
    onkeyup="javascript:DoCal()"
    />

    
    

    

    单价">
    
    
    onkeyup="javascript:DoCal()"
    />

    

    

    

    金额">
    
    ’ />
    

    
    function DoCal()
    {
    
 var e = event.srcElement;
    
 var row = e.parentNode.parentNode;
    
 var txts = row.all.tags("INPUT");
    
 if (!txts.length || txts.length < 3)
    
  return;

    
 var q = txts[txts.length-3].value;
    
 var p = txts[txts.length-2].value;

    
 if (isNaN(q) || isNaN(p))
    
  return;

    
 q = parseInt(q);
    
 p = parseFloat(p);

    
 txts[txts.length-1].value = (q * p).toFixed(2);
    }
    

  
  24.datagrid选定比较底下的行时,为什么总是刷新一下,然后就滚动到了最上面,刚才选定的行因屏幕的关系就看不到了。

  
  page_load
    page.smartNavigation=true

      25.Datagrid中修改数据,当点击编辑键时,数据出现在文本框中,怎么控制文本框的大小 ?

 
   private void DataGrid1_ItemDataBound(obj sender,DataGridItemEventArgs e)
    {
    
 for(int i=0;i       if(e.Item.ItemType==ListItemType.EditType)
    
  {
    
   e.Item.Cells[i].Attributes.Add("Width", "80px")
    
  }
    }

      26.对话框

   
 private static string ScriptBegin = "";
    private static string ScriptEnd = "";

    public static void ConfirmMessageBox(string PageTarget,string Content)
    {
    
 string ConfirmContent="var retValue=window.confirm(’"+Content+"’);"+"if(retValue){window.location=’"+PageTarget+"’;}";

    
 ConfirmContent=ScriptBegin + ConfirmContent + ScriptEnd;

    
 Page ParameterPage = (Page)System.Web.HttpContext.Current.Handler;
    
 ParameterPage.RegisterStartupScript("confirm",ConfirmContent);
    
 //Response.Write(strScript);
    }

    
27. 将时间格式化:string aa=DateTime.Now.ToString("yyyyMMdd");

      1.1 取当前年月日时分秒

    currentTime=System.DateTime.Now;

    
  1.2 取当前年

    int 
= DateTime.Now.Year;

    
  1.3 取当前月

    int 
= DateTime.Now.Month;

    
  1.4 取当前日

    int 
= DateTime.Now.Day;

    
  1.5 取当前时

    int 
= DateTime.Now.Hour;

    
  1.6 取当前分

    int 
= DateTime.Now.Minute;

    
  1.7 取当前秒

    int 
= DateTime.Now.Second;

    
  1.8 取当前毫秒

    int 
毫秒= DateTime.Now.Millisecond;

 28.自定义分页代码:

    
  先定义变量 

    public static int pageCount; //总页面数
    public static int curPageIndex=1; //
当前页面

    
  下一页:

    if(DataGrid1.CurrentPageIndex < (DataGrid1.PageCount - 1))
    {
    
 DataGrid1.CurrentPageIndex += 1;
    
 curPageIndex+=1;
    }

    bind(); // DataGrid1
数据绑定函数

    
  上一页:

    if(DataGrid1.CurrentPageIndex >0)
    {
    
 DataGrid1.CurrentPageIndex += 1;
    
 curPageIndex-=1;
    }

    bind(); // DataGrid1
数据绑定函数

    
  直接页面跳转:

    int a=int.Parse(JumpPage.Value.Trim());//JumpPage.Value.Trim()
为跳转值

    if(a     {
    
 this.DataGrid1.CurrentPageIndex=a;
    }

    bind();

    29DataGrid使用:

    
  添加删除确认:

    private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    
 foreach(DataGridItem di in this.DataGrid1.Items)
    
 {
    
  if(di.ItemType==ListItemType.Item||di.ItemType==ListItemType.AlternatingItem)
    
  {
    
   ((LinkButton)di.Cells[8].Controls[0]).Attributes.Add("onclick","return confirm(’确认删除此项吗?’);");
    
  }
    
 }
    }

      样式交替:

   
 ListItemType itemType = e.Item.ItemType;

    if (itemType == ListItemType.Item )
    {
    
 e.Item.Attributes["onmouseout"] = "javascript:this.style.backgroundColor=’#FFFFFF’;";
    
 e.Item.Attributes["onmouseover"] = "javascript:this.style.backgroundColor=’#d9ece1’;cursor=’hand’;" ;
    }
    else if( itemType == ListItemType.AlternatingItem)
    {
    
 e.Item.Attributes["onmouseout"] = "javascript:this.style.backgroundColor=’#a0d7c4’;";
    
 e.Item.Attributes["onmouseover"] = "javascript:this.style.backgroundColor=’#d9ece1’;cursor=’hand’;" ;
    }

    
  添加一个编号列:

    DataTable dt= c.ExecuteRtnTableForAccess(sqltxt); //执行sql返回的DataTable
    DataColumn dc=dt.Columns.Add("number",System.Type.GetType("System.String"));

    for(int i=0;i     {
    
 dt.Rows[i]["number"]=(i+1).ToString();
    }

    DataGrid1.DataSource=dt;
    DataGrid1.DataBind();

    
  DataGrid1中添加一个CheckBox,页面中添加一个全选框

    private void CheckBox2_CheckedChanged(object sender, System.EventArgs e)
    {
    
 foreach(DataGridItem thisitem in DataGrid1.Items)
    
 {
    
  ((CheckBox)thisitem.Cells[0].Controls[1]).Checked=CheckBox2.Checked;
    
 }
    }

    
  将当前页面中DataGrid1显示的数据全部删除

    foreach(DataGridItem thisitem in DataGrid1.Items)
    {
    
 if(((CheckBox)thisitem.Cells[0].Controls[1]).Checked)
    
 {
    
  string strloginid= DataGrid1.DataKeys[thisitem.ItemIndex].ToString();
    
  Del (strloginid); //删除函数
    
 }
    }

      30.当文件在不同目录下,需要获取数据库连接字符串(如果连接字符串放在Web.config,然后在Global.asax中初始化)

    
  在Application_Start中添加以下代码:

  
  Application["ConnStr"]=this.Context.Request.PhysicalApplicationPath+ConfigurationSettings.
    
   AppSettings["ConnStr"].ToString();

      31 变量.ToString()

    
  字符型转换 转为字符串

    12345.ToString("n"); //
生成 12,345.00
    12345.ToString("C"); //
生成 12,345.00
    12345.ToString("e"); //
生成 1.234500e+004
    12345.ToString("f4"); //
生成 12345.0000
    12345.ToString("x"); //
生成 3039 (16进制)
    12345.ToString("p"); //
生成 1,234,500.00%

      32、变量.Substring(参数1,参数2);

    
  截取字串的一部分,参数1为左起始位数,参数2为截取几位。 如:string s1 = str.Substring(0,2);

    
  33.在自己的网站上登陆其他网站:(如果你的页面是通过嵌套方式的话,因为一个页面只能有一个FORM,这时可以导向另外一个页面再提交登陆信息)

    

    

     
    
    
    
    
    
    

    
    
    
    
    


    
  文本框的名称必须是你要登陆的网页上的名称,如果源码不行可以用vsniffer 看看。
    
  下面是获取用户输入的登陆信息的代码:

    string name;
    name=Request.QueryString["EmailName"];


    try
    {
    
 int a=name.IndexOf("@",0,name.Length);
    
 f_user.Value=name.Substring(0,a);
    
 f_domain.Value=name.Substring(a+1,name.Length-(a+1));
    
 f_pass.Value=Request.QueryString["Psw"];
    }

    catch
    {
    
 Script.Alert("错误的邮箱!");
    
 Server.Transfer("index.aspx");
    }

阅读(353) | 评论(0) | 转发(0) |
0

上一篇:HttpModule

下一篇:LinQ基础

给主人留下些什么吧!~~