按月存档: 03月 2007

asp.net中常用的编程代码五

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<DataGrid1.PageCount)   {    this.DataGrid1.CurrentPageIndex=a;   }      bind();

asp.net中常用的编程代码四

   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;     }    }   }

asp.net中常用的编程代码三

 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   }      12.Panel 横向滚动,纵向自动扩展      <asp:panel style="overflow-x:scroll;overflow-y:auto;"></asp:panel>        13.回车转换成Tab      <script language="javascript" 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;   </script>      onkeydown="if(event.keyCode==13) event.keyCode=9"           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.backgro
undColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\"");     e.Item.Attributes.Add( "onmouseover","this.style.backgroundColor=\""+ "#EFF3F7"+"\"");    }   }   

asp.net中常用的编程代码二

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

asp.net中常用的编程代码一

对于一个初学者这些代码我觉得非常有用,有利于熟悉基本语法,和一些控件的使用技巧和用法,很多编程方法都是书上没提到过的,特别从酷网动力(www.ASPCOOL.COM)上转载过来,
   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 + "’)");   }

Web控件使用

接着昨天学习Web控件的使用,今天主要学习了ListBox、DropDownList、Panel、RDotator以及数据库SQL语句和简单触发器的书写,具体实践是做了一个动态网上投票系统。
  其实在ASP.NET中的Web控件有很多相似之处,如对ListBox,CheckBoxList,RadirBoxList,DropDownList等,都有DataSource,DataTextField,DataValueField,DataBind等方法。这些方法可以在动态编程中去实现,也可以在程序设计之初就设定。对于Panel控件,它所带来的好处是,可以根据它的Visible属性设定其隐藏与否,使得页面简洁整齐,在用户使用时方便,而且还减少了页面跳转,加快与用户交流效率。
  在动态网上投票系统中,是根据数据库中的相关值的设定与更改,来实现对投票系统的动态管理,这样,在网页上,带来方便。

试图运行项目时出错: 无法在 Web 服务器上启动调试。您没有调试该服务器的权限。

晚上用vs2003调试一个小例子,发现装了提示:
—————————Microsoft 开发环境—————————试图运行项目时出错: 无法在 Web 服务器上启动调试。您没有调试该服务器的权限。
验证您是服务器上“Debugger Users”组的成员。—————————确定   帮助   —————————
很奇怪,以前调试都没问题,还以为是IIS的问题,胡乱摸索了半天也没解决问题,
原因:IE没有使用当前的登录用户解决方法:1、将 http://localhost/ 从可信站点删去,加到intranet2、在IE选项->"安全设置"->"可信站点"->"自定义级别"里有"用户验",确认选中"自动使用当前用户名和密码登录"

终于解决了安装sqlserver因进程挂起而无法安装的问题了

每次重装系统后,都要安装sqlserver,但每次都碰到两个问题,第一个问题就是:command line option syntax error,type command/? for help 好像是一个帮助文件缺失,以前都是忽略,不影响使用.第二个问题非常挠头,经常重启重新安装的时候还是提示因进程挂起无法安装,提示再重启.
问题一:先安装时,报MDAC相关组件错误,同时报command line option syntax error,type command/? for help,然后忽略继续装下去,最后会出现“无法找到动态链接库SQLUNIRL.DLL”然后安装不成功。
解决:可能是因为我的原始安装目录包含中文的原因,虽然安装目标路径全为英文,但原始安装目录包含中文,全改为英文后,就没有出现语法错误的提示,同时会进行MDAC组件的安装,也不会报MDAC的错误;无法找到动态链接库SQLUNIRL.DLL是将原始安装路径中的企业版里的此“SQLUNIRL.DLL”拷贝到了系统盘的system和system32路径下,也就没有报此相关错误了。
 
问题二:SQLSERVER安装挂起问题,由于之前安装了SQLSERVER但安装失败,再次安装时,会提示说还有以前的进程挂起之类的,无法继续安装。
解决:去注册表里HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目,删除其值。这样就可以清除安装暂挂项目。
解决上述问题后,SQLSERVER成功安装。

服务器控件使用练习

在今天的学习过程中,主要了解到了服务器控件与HTML控件的差别,以及对几个.NET服务器控件的练习,同时也在练习过程中接触到了数据库相关编程。  在.NET中,服务器控件与HTML控件差不多,在源码中,.NET控件比HTML控件多了一个|runat="server"|的属性,这是其中不同之处;另外,在书写上,HTML控件基本是由控件的"type"属性来决定的,而.NET中的服务器端控件中,则没有"type"属性。  如:  在HTML中checkBox控件中写成:<input type="checkBox" name="chkBox">      在.NET控件中,源码则是:<asp:checkBox name="chkBox">      其中最为主要的区别就是服务器端控件要在获得事件后,向服务器端发送请求,服务器端收到请求并处理后,再返回给客户端,这是一般HTML控件所不同的。  在练习中,首先是了解了服务器控件在接受事件后向服务器发送请求,并接收服务器送回的响应。如当点击.aspx页面中的Button按钮时,即使后台没有定义相应的Click事件,也会促使页面向服务器端发送请求,再次生成Page_load()事件。可以使用this.isPostBack属性来判断是第一次页面装载,还是请求返回页面。  其次是对web控件CheckBox、RadioBox、CheckBoxList、RadioBoxList等控件进行练习。在使这些控件的时候,要慎重使用其AutoPostBack属性,在、迫不得已的时候才将其设为True。其中List类控件的优点在于,可以实现与数据库的链接,真正实现了动态网页技术。在与数据库相关操作中,应当先进行数据库链接,然后将执行SQL语句,之后是对DataSource赋值,设置DataTextField(显示值)和DataValueField(隐藏值)。  总结以上学习,今天学到东西较少,当然有其它原因,但是今后要提高效率,认真学习。  争取明天看三集视频教程,更进一步去了解ASP.NET

Asp.Net的学习与实践

现将每天学习Asp.Net的基础知识与实践内容记录下来,每天进步百分之一;
并综合以前学习,做了一个用户注册实例。
  Ado.Net中,包含两种数据库连接方式,一种是SqlClient,另一种是OleDbClient。它与数据库在交互用使用方法基本如下:
先创建数据库连接,SqlConnnection;再定义数据库适配器,SqlDataAdapter定义适配器的SelectCommand定义数据集DataSet用数据库适配器的SelectCommand查询所得到内容填充到数据集中,并定义相应的表名称。
SqlConnection con=new Sqlconnection("连接字段")
SqlCommand com=new SqlCommand("SQL语句",con)
SqlDataAdapter sda=com.ExecuterNonQuery()
DataSet ds=new DataSet()
sda.Fill(ds,"本地表名")
  在今天学习过程中,最为重要的是了解到了用面向对象编程思想所带来的方便。如对于一般的个人用户注册的时候,都会有一个用户实体,相应的也包含许多相关的操作,如用查找用户、插入用户、删除用户等。这些操作完全也应当放在一个类中,做成不同的方法(静态的还是很方便的),在程序完成相关操作的时候,只需要引用相关方法就可以直接使用。
  另外,在进行用户注册的时候,可以对用户输入信息进行验证,这一点ASP.NET做的相比JSP更方便一些。
  在用户上传文件的时候,要把在<form>中设置enctype="multipart/form-data" FileUpload控件也要加上runat=server,这样才能实现文件的上传。