一位asp.net初学者学习过程中整理的备忘录,包括“打开新的窗口并传送参数,为按钮添加对话框,删除表格选定记录,删除表格记录警告”等等?lt;?A href=http://cs.mimi163.net/cs/question.php>问题的解决方法.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 ){ " );}双击表格连接到另一页,在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.表格超连接列传递参数<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.Transfere.gprotected void Application_Error( Object sender, EventArgs e ) { if ( Server.GetLastError( ) is HttpUnhandledException ) Server.Transfer( "MyErrorPage.aspx" ); }Redirect会导致post-back的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理10.清空CookieCookie.Expires=[DateTime];Response.Cookies( "UserName" ).Expires = 011.自定义异常处理using System.Diagnostics;namespace MyAppException{ 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.Configuration; using System.Diagnostics; using System.IO; using System.Text; using System.Threading; namespace MyEventLog { 事件日志记录类,提供事件日志记录支持 <remarks> 定义了4个日志记录方法 ( error, warning, info, trace ) </remarks> public class ApplicationLog { 将错误信息记录到Win2000/NT事件日志中 <param name="message">需要记录的文本信息</param> public static void WriteError( String message ) { WriteLog( TraceLevel.Error, message ); } 将警告信息记录到Win2000/NT事件日志中 <param name="message">需要记录的文本信息</param> public static void WriteWarning( String message ) { WriteLog( TraceLevel.Warning, message ); } 将提示信息记录到Win2000/NT事件日志中 <param name="message">需要记录的文本信息</param> public static void WriteInfo( String message ) { WriteLog( TraceLevel.Info, message ); } 将跟踪信息记录到Win2000/NT事件日志中 <param name="message">需要记录的文本信息</param> public static void WriteTrace( String message ) { WriteLog( TraceLevel.Verbose, message ); } 格式化记录到事件日志的文本信息格式 <param name="ex">需要格式化的异常对象</param> <param name="catchInfo">异常信息标题字符串.</param> <retvalue> <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para> </retvalue> 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( ); } 实际事件日志写入方法 <param name="level">要记录信息的级别(error,warning,info,trace ).</param> <param name="messageText">要记录的文本.</param> 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 { } } } } 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"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版 21.委托讨论 http://community.csdn.net/Expert/topic/2651/2651579.xml?temp=.7183191http://dev.csdn.net/develop/article/22/22951.shtm 22.读取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列,要求在录入数量及单价的时候自动算出金额即:数量*单价=金额还要求录入时限制为 数值型.我如何用客户端脚本实现这个功能? 〖思归〗 <asp:TemplateColumn HeaderText="数量"> <ItemTemplate> <asp:TextBox id="ShuLiang" runat='server' Text='<%# DataBinder.Eval( Container.DataItem,"DG_ShuLiang" )%>' onkeyup="javascript:DoCal( )" /> <asp:RegularExpressionValidator id="revS" runat="server"ControlToValidate="ShuLiang" ErrorMessage="must be integer" ValidationExpression="^d+$" /> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="单价"> <ItemTemplate> <asp:TextBox id="DanJian" runat='server' Text='<%# DataBinder.Eval( Container.DataItem,"DG_DanJian" )%>' onkeyup="javascript:DoCal( )" /> <asp:RegularExpressionValidator id="revS2" runat="server" ControlToValidate="DanJian" ErrorMessage="must be numeric" ValidationExpression="^d+( .d* )?___FCKpd___0quot; /> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="金额"> <ItemTemplate> <asp:TextBox id="JinE" runat='server' Text='<%# DataBinder.Eval( Container.DataItem,"DG_JinE" )%>' /> </ItemTemplate> </asp:TemplateColumn> <script language="javascript">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 ); } </script> 24.datagrid选定比较底下的行时,为什么总是刷新一下,然后就滚动到了最上面,刚才选定的行因屏幕的关系就看不到了 page_load page.smartNavigation=true 25.在Datagrid中修改数据,当点击编辑键时,数据出现在文本框中,怎么控制文本框的大小 ? private void DataGrid1_ItemDataBound( obj sender,DataGridItemEventArgs e ) { for( int i=0; i<e.Item.Cells.Count-1; i++ ) if( e.Item.ItemType==ListItemType.EditType ) { e.Item.Cells[i].Attributes.Add( "Width", "80px" ) } } 26.对话框 private static string ScriptBegin = " <script language="JavaScript">"; private static string ScriptEnd = "</script>"; 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 ); }