一位asp.net初学者学习过程中整理的备忘录,包括“打开新的窗口并传送参数,为按钮添加对话框,删除表格选定记录,删除表格记录警告”等等?lt;?A href=http://cs.mimi163.net/cs/question.php>问题的解决方法. 1. 打开新的窗口并传送参数: 传送参数: response.write( this.DropDownList1.SelectIndex+ +...+ ) 接收参数: string a = Request.QueryString( ); string b = Request.QueryString( ); 2.为按钮添加对话框 Button1.Attributes.Add( , ); button.attributes.add( , { return true; } else { return false; } 3.删除表格选定记录 int intEmpID = ( int )MyDataGrid.DataKeys[e.Item.ItemIndex]; string deleteCmd = + 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( , 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( , + 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( , + OrderItemID + ); } 双击表格打开新一页 if( e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem ) { string OrderItemID =e.item.cells[1].Text; ...e.item.Attributes.Add( , + OrderItemID + ); } ★特别注意:【?id=】 处不能为 【?id =】 6.表格超连接列传递参数 <asp:HyperLinkColumn Target= headertext= DataTextField= NavigateUrl= 数据字段1 数据字段2 7.表格点击改变颜色 if ( e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem ) { e.Item.Attributes.Add( , 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( , this.style.backgroundColor='#99cc00'; this.style.color='buttontext'; this.style.cursor='default'; e.Item.Attributes.Add( , this.style.backgroundColor=''; this.style.color=''; } 8.关于日期格式 日期格式设定 DataFormatString= { 0:yyyy-MM-dd } 我觉得应该在itembound事件中 e.items.cell[ ].text=DateTime.Parse( e.items.cell[ ].text.ToString( ) ) 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( ); //其余的非HttpUnhandledException异常交给asp.NET自己处理就okay了 : ) } Redirect会导致post-back的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理 10.清空Cookie Cookie.Expires=[DateTime]; Response.Cookies( ).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= >需要记录的文本信息</param> /// </summary> public static void WriteError( String message ) { WriteLog( TraceLevel.Error, message ); } /// <summary> /// 将警告信息记录到Win2000/NT事件日志中 /// <param name= >需要记录的文本信息</param> /// </summary> public static void WriteWarning( String message ) { WriteLog( TraceLevel.Warning, message ); } /// <summary> /// 将提示信息记录到Win2000/NT事件日志中 /// <param name= >需要记录的文本信息</param> /// </summary> public static void WriteInfo( String message ) { WriteLog( TraceLevel.Info, message ); } /// <summary> /// 将跟踪信息记录到Win2000/NT事件日志中 /// <param name= >需要记录的文本信息</param> /// </summary> public static void WriteTrace( String message ) { WriteLog( TraceLevel.Verbose, message ); } /// <summary> /// 格式化记录到事件日志的文本信息格式 /// <param name= >需要格式化的异常对象</param> /// <param name= >异常信息标题字符串.</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( } strBuilder.Append( ex.Message ).Append( return strBuilder.ToString( ); } /// <summary> /// 实际事件日志写入方法 /// <param name= >要记录信息的级别(error,warning,info,trace ).</param> /// <param name= >要记录的文本.</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( , ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName); //写入事件日志 eventLog.WriteEntry( messageText, LogEntryType ); } catch { } //忽略任何异常 } } //class ApplicationLog } 12.Panel 横向滚动,纵向自动扩展 <asp:panel style= overflow-y:auto; 13.回车转换成Tab <script language= for= event= >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>οnkeydοwn= http://dotnet.aspx.cc/exam/enter2tab.aspx 14.DataGrid超级连接列 DataNavigateUrlField= DataNavigateUrlFormatString= 15.DataGrid行随鼠标变色 private void DGzf_ItemDataBound( object sender, System.Web.UI.WebControls.DataGridItemEventArgs e ) { if ( e.Item.ItemType!=ListItemType.Header ) { e.Item.Attributes.Add( , this.style.backgroundColor= +e.Item.Style[ ]+ e.Item.Attributes.Add( , this.style.backgroundColor= + + } } 16.模板列 <asp:TEMPLATECOLUMN visible= sortexpression= headertext= > <ITEMTEMPLATE> <asp:LABEL text='<%# DataBinder.Eval( Container.DataItem, )%>' runat= width= id= /> </ITEMTEMPLATE> </asp:TEMPLATECOLUMN> <asp:TEMPLATECOLUMN headertext= > <HEADERSTYLE wrap= horizontalalign= ></HEADERSTYLE> <ITEMTEMPLATE> <asp:CHECKBOX id= runat= /> </ITEMTEMPLATE> <EDITITEMTEMPLATE> <asp:CHECKBOX id= runat= enabled= /> </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.Checked = true; } } else { foreach( DataGridItem oDataGridItem in MyDataGrid.Items ) { chkExport = ( CheckBox )oDataGridItem.FindControl( ); chkExport.Checked = false; } } } 17.数字格式化 【<%#Container.DataItem( )%>的结果是500.0000,怎样格式化为500.00?】<%#Container.DataItem( , { 0:¥#,##0.00 } int i=123456; string s=i.ToString( ); 18.日期格式化 【aspx页面内:<%# DataBinder.Eval( Container.DataItem, )%> 显示为: 2004-8-11 19:44:28 我只想要:2004-8-11 】 <%# DataBinder.Eval( Container.DataItem, , { 0:yyyy-M-d } 应该如何改? 【格式化日期】取出来,一般是object( ( DateTime )objectFromDB ).ToString( ); 【日期的验证表达式】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,将器值设置成 即可.( Target= ) 【aspNETMENU】点击菜单项弹出新窗口 在你的menuData.xml文件的菜单项中加入URLTarget= 如: <?xml version= encoding= ?><MenuData ImagesBaseURL= > <MenuGroup> <MenuItem Label= URL= > <MenuGroup ID= > <MenuItem Label= URL= URLTarget= LeftIcon= /> <MenuItem Label= URL= LeftIcon= />...... 最好将你的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( ); tb.Text.... } 23.在DataGrid中有3个模板列包含Textbox分别为 DG_ShuLiang ( 数量 ) DG_DanJian( 单价 ) DG_JinE( 金额 )分别在5.6.7列,要求在录入数量及单价的时候自动算出金额即:数量*单价=金额还要求录入时限制为 数值型.我如何用客户端脚本实现这个功能? 〖思归〗 <asp:TemplateColumn HeaderText= > <ItemTemplate> <asp:TextBox id= runat='server' Text='<%# DataBinder.Eval( Container.DataItem, )%>' οnkeyup= /> <asp:RegularExpressionValidator id= runat= ControlToValidate= ErrorMessage= integer ^d+$ </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText= > <ItemTemplate> <asp:TextBox id= runat='server' Text='<%# DataBinder.Eval( Container.DataItem, )%>' οnkeyup= /> <asp:RegularExpressionValidator id= runat= ControlToValidate= ErrorMessage= ValidationExpression= /> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText= > <ItemTemplate> <asp:TextBox id= runat='server' Text='<%# DataBinder.Eval( Container.DataItem, )%>' /> </ItemTemplate> </asp:TemplateColumn> <script language= >function DoCal( ) { var e = event.srcElement; var row = e.parentNode.parentNode; var txts = row.all.tags( ); 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( , ) } } 26.对话框 private static string ScriptBegin = <script language= > private static string ScriptEnd = ; public static void ConfirmMessageBox( string PageTarget, string Content ) { string ConfirmContent= +Content+ if( retValue ) { window.location=' '; } ConfirmContent=ScriptBegin + ConfirmContent + ScriptEnd; Page ParameterPage = ( Page )System.Web.HttpContext.Current.Handler; ParameterPage.RegisterStartupScript( ,ConfirmContent ); //Response.Write( strScript ); }<script>window.open( '*.aspx?id=
ASP.Net开发新手常见问题备忘录
最新推荐文章于 2024-09-23 08:37:48 发布