ASP.NET程序中常用的三十三种代码 | |
1. 打开新的窗口并传送参数: 传送参数: response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>") string a = Request.QueryString("id"); Button1.Attributes.Add("onclick","return confirm(’确认?’)"); int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex]; private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs e) } private void grdCustomer_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 在itemDataBind事件中 if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 6.表格超连接列传递参数 <asp:HyperLinkColumn Target="_blank" headertext="ID号" DataTextField="id" NavigateUrl="aaa.aspx?id=’ if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem) if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem) 8.关于日期格式 日期格式设定 DataFormatString="{0:yyyy-MM-dd}" e.items.cell["你的列"].text=DateTime.Parse(e.items.cell["你的列"].text.ToString("yyyy-MM-dd")) 不要使用Response.Redirect,而应该使用Server.Transfer e.g // in global.asax //其余的非HttpUnhandledException异常交给ASP.NET自己处理就okay了 :) 10.清空Cookie Cookie.Expires=[DateTime]; //自定义异常处理类 namespace MyAppException public AppException(string message) public AppException(string message,Exception innerException) //日志记录类 namespace MyEventLog /// <summary> /// <summary> /// <summary> /// <summary> EventLog eventLog = new EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName ); } <asp:panel style="overflow-x:scroll;overflow-y:auto;"></asp:panel> <script language="javascript" for="document" event="onkeydown"> onkeydown="if(event.keyCode==13) event.keyCode=9" 14.DataGrid超级连接列 DataNavigateUrlField="字段名" DataNavigateUrlFormatString="http://xx/inc/delete.aspx?ID={0}" private void DGzf_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) <ASP:TEMPLATECOLUMN visible="False" sortexpression="demo" headertext="ID"> <ASP:TEMPLATECOLUMN headertext="选中"> protected void CheckAll_CheckedChanged(object sender, System.EventArgs e) 【<%#Container.DataItem("price")%>的结果是500.0000,怎样格式化为500.00?】 <%#Container.DataItem("price","{0:¥#,##0.00}")%> int i=123456; 【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})))?$ ^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); Global.asax中 Application_Start()事件中 添加Application[属性名] = xxx; 就是你的全局变量 20.怎样作到HyperLinkColumn生成的连接后,点击连接,打开新窗口? HyperLinkColumn有个属性Target,将器值设置成"_blank"即可.(Target="_blank") 【ASPNETMENU】点击菜单项弹出新窗口 在你的menuData.xml文件的菜单项中加入URLTarget="_blank",如: <?xml version="1.0" encoding="GB2312"?> 21.读取DataGrid控件TextBox值 foreach(DataGrid dgi in yourDataGrid.Items) 〖思归〗 <asp:TemplateColumn HeaderText="数量"> <asp:RegularExpressionValidator id="revS" runat="server" ControlToValidate="ShuLiang" ErrorMessage="must be integer" ValidationExpression="^d+$" /> <asp:TemplateColumn HeaderText="单价"> <asp:RegularExpressionValidator id="revS2" runat="server" ControlToValidate="DanJian" ErrorMessage="must be numeric" ValidationExpression="^d+(.d*)?$" /> </ItemTemplate> <asp:TemplateColumn HeaderText="金额"> var q = txts[txts.length-3].value; if (isNaN(q) || isNaN(p)) q = parseInt(q); txts[txts.length-1].value = (q * p).toFixed(2); 24.datagrid选定比较底下的行时,为什么总是刷新一下,然后就滚动到了最上面,刚才选定的行因屏幕的关系就看不到了。 page_load private void DataGrid1_ItemDataBound(obj sender,DataGridItemEventArgs e) private static string ScriptBegin = "<script language="JavaScript">"; public static void ConfirmMessageBox(string PageTarget,string Content) ConfirmContent=ScriptBegin + ConfirmContent + ScriptEnd; Page ParameterPage = (Page)System.Web.HttpContext.Current.Handler; 1.1 取当前年月日时分秒 currentTime=System.DateTime.Now; int 年= DateTime.Now.Year; int 月= DateTime.Now.Month; int 日= DateTime.Now.Day; int 时= DateTime.Now.Hour; int 分= DateTime.Now.Minute; int 秒= DateTime.Now.Second; int 毫秒= DateTime.Now.Millisecond; 先定义变量 : public static int pageCount; //总页面数 if(DataGrid1.CurrentPageIndex < (DataGrid1.PageCount - 1)) bind(); // DataGrid1数据绑定函数 if(DataGrid1.CurrentPageIndex >0) bind(); // DataGrid1数据绑定函数 int a=int.Parse(JumpPage.Value.Trim());//JumpPage.Value.Trim()为跳转值 if(a<DataGrid1.PageCount) bind(); 添加删除确认: private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) ListItemType itemType = e.Item.ItemType; if (itemType == ListItemType.Item ) DataTable dt= c.ExecuteRtnTableForAccess(sqltxt); //执行sql返回的DataTable for(int i=0;i<dt.Rows.Count;i++) DataGrid1.DataSource=dt; private void CheckBox2_CheckedChanged(object sender, System.EventArgs e) foreach(DataGridItem thisitem in DataGrid1.Items) 在Application_Start中添加以下代码: Application["ConnStr"]=this.Context.Request.PhysicalApplicationPath+ConfigurationSettings. 字符型转换 转为字符串 12345.ToString("n"); //生成 12,345.00 截取字串的一部分,参数1为左起始位数,参数2为截取几位。 如:string s1 = str.Substring(0,2); 33.在自己的网站上登陆其他网站:(如果你的页面是通过嵌套方式的话,因为一个页面只能有一个FORM,这时可以导向另外一个页面再提交登陆信息) <SCRIPT language="javascript"> </SCRIPT><body leftMargin="0" topMargin="0" "gook()" marginwidth="0" marginheight="0"> <INPUT id="lng" type="hidden" maxLength="20" size="1" value="5" name="lng"> </td> </tr> </form> 下面是获取用户输入的登陆信息的代码: string name; try catch
一个功能齐全的DataGrid分页例子分类:默认栏目 C#版本 DataGridPaging.aspx HorizontalAlign="Center" AlternatingItemStyle-BackColor="#eeeeee" HeaderStyle-BackColor="#aaaadd" Font-Size="8pt" Font-Name="Verdana" CellSpacing="0" CellPadding="3" GridLines="Both" BorderWidth="1" BorderColor="black" OnPageIndexChanged="MyDataGrid_Page" PagerStyle-HorizontalAlign="Right" PagerStyle-Mode="NumericPages" PageSize="5" AllowPaging="True">
DataGridPaging.aspx.cs using System; namespace eMeng.Exam.DataGridPaging /// DataGridPaging 的摘要说明。 /// public class DataGridPaging : System.Web.UI.Page { protected System.Web.UI.WebControls.DataGrid MyDataGrid; protected System.Web.UI.WebControls.Label lblPageCount; protected System.Web.UI.WebControls.Label lblCurrentIndex; protected System.Web.UI.WebControls.LinkButton btnFirst; protected System.Web.UI.WebControls.LinkButton btnPrev; protected System.Web.UI.WebControls.LinkButton btnNext; protected System.Web.UI.WebControls.LinkButton btnLast; private OleDbConnection cn = new OleDbConnection(); private void Page_Load(object sender, System.EventArgs e) public void PagerButtonClick(object sender, EventArgs e) #region Web Form Designer generated code /// /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); }
DataGridPaging.aspx HeaderStyle-BackColor="#aaaadd" Font-Size="8pt" Font-Name="Verdana" CellSpacing="0" CellPadding="3" GridLines="Both" BorderWidth="1" BorderColor="black" OnPageIndexChanged="MyDataGrid_Page" PagerStyle-HorizontalAlign="Right" PagerStyle-Mode="NumericPages" PageSize="5" AllowPaging="True">
DataGridPaging.aspx.vb Imports System.Data.SqlClient Public Class DataGridPaging Protected WithEvents MyDataGrid As System.Web.UI.WebControls.DataGrid #Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer. End Sub Private Sub Page_Init(ByVal sender As System.Object,_ #End Region Private Sub Page_Load(ByVal sender As System.Object,_
Sub BindGrid() End Sub Sub PagerButtonClick(ByVal sender As Object, ByVal e As EventArgs) Select Case arg Sub ShowStats() Public cn As New SqlClient.SqlConnection()
用Repeater控件显示数据分类:默认栏目 如果你正在使用ASP.NET,你一定对DataGrid控件非常熟悉。DataGrid控件提供了各种特性,通过这些特性可以很容易地在一个Web页面上以列表形式显示数据。但是,如果你不想使用HTML表格形式呢?此时,可以使用一个DataGrid的一个鲜为人知的兄弟控件,即Repeater控件。Repeater控件提供显示你所需要数据的灵活性。 Repeater控件是什么? 与DataGrid和DataList控件不同,Repeater控件并不是由WebControl类派生而来。所以,它不包括一些通用的格式属性,比如控制字体,颜色,等等。然而,使用Repeater控件,HTML(或者一个样式表)或者ASP.NET类可以处理这些属性。 HTML在哪里? 模板与DataList一样,Repeater控件只支持模板。以下的模板可供选择: AlternatingItemTemplate: 指定如何显示每一其它选项。 数据 DataMember:获得或者设置与 Repeater 控件绑定的相应DataSource属性的表格。 DataSource:获得或者设置为 Repeater 显示提供数据的数据源。 除此之外,还有一个Items属性,你可以通过这一属性编程访问Repeater数据中单一选项。它返回一个RepeaterItemCollection对象,为一组RepeaterItem对象的集合,代表 Repeater 数据的每一行。 ASP.NET Web数据控件还有其它一个共性:它们都使用DataBind方法来生成用户界面。调用这一方法可以返回并显示数据(假设DataSource和DataMember属性设置正确)。在查看DataBind方法之前,我们先看看如何在一个Web页面中使用一个Repeater控件。 使用Repeater控件
可以注意到,每个 Repeater 行中样式表控制着文字的外观。除此之外,在网页内容中还添加了一个文本框。嵌入式 C# 代码从 Repeater 的数据源中获取相应的列。每个数据项都被转换成一个DataRowView对象以便显示。 这一页面并不是使用ASP.NET的“后台代码”性质。由于这一原因,页面引用了两个System.Data和System.Data.SqlClient空间名称。这对于使用DataRowView对象和与 SQL Server 交互访问是必需的。 当调用页面时就会触发Page_Load事件。此时会把数据源连接到 Repeater 控件上,并查询数据库。每一Repeater行的代码从潜在数据源中载入数据,并且Web页面显示这些数据。 这一设计使用了样式表(以及 HTML div 标记),所以更改外观只需要更改必要的样式表代码。为了进一步地将数据和显示分离,你可以在一个独立文件中存储样式表,并以一个HTML LINK标记来引用它们。 一个很好的选择
Northwind Employees
, , 在ASP.NET中跨页面实现多选分类:默认栏目 本文介绍如何在ASP.NET中实现多页面选择的问题。其具体思路很简单:用隐藏的INPUT记住每次选择的项目,在进行数据绑定时,检查保存的值,再在DataGrid中进行选中显示。下面时完整的代码和例子: 查看例子 SelectMultiPages.aspx AllowPaging="True" runat="server"> value=' '/>
SelectMultiPages.aspx.cs using System; namespace eMeng.Exam /// SelectMultiPages 的摘要说明。 /// public class SelectMultiPages : System.Web.UI.Page { protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.Label Label1; protected System.Web.UI.HtmlControls.HtmlInputHidden HdnSelectedValues; protected System.Web.UI.WebControls.DataGrid DataGrid1; private void Page_Load(object sender, System.EventArgs e) void BindData() private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
#region Web 窗体设计器生成的代码 /// /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// private void InitializeComponent() { this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound); this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged); this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Load += new System.EventHandler(this.Page_Load); } } } 在asp.net中为Web用户控件添加属性和事件分类:默认栏目 在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程。它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩Asp的高手,经历这么多年而不衰,可见他的成功。 中文 英文 在后台代码中添加事件和属性。 虽然在前台添加了LogInOutControl1,但是后台代码中不会生成protected LogInOutControl LogInOutControl1;这条语句,我觉得很奇怪,不管先加上他。 接着在Page_Load事件中注册LogInOutClick事件: this.LogInOutControl1.LogInOutClick += new LogInOutClickHandler(LogInOutControl1_LogInOutClick); 完整代码如下: namespace ZZ
在DataGrid里面根据日期的不同显示new图标分类:默认栏目 第一步:这样写Sql语句: select top 5 PK_Rntol_ID,Title,RenoDate,Promulgator,Flag=case 第二步: 在DataGrid的DataBound()方法里面: /// /// 根据日期的多少,决定是否显示new图标 /// /// /// private void wgrd_Info_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { if(e.Item.Cells[5].Text == "1") { e.Item.Cells[1].Text = e.Item.Cells[1].Text + " "; } } }
自动处理过长字符串显示的Web控件分类:默认栏目 我们很多时候需要在一行上显示一段说明文字,而由于Web页面宽度的不确定性,我们任意调节其宽度后,常常搞得文字撑出页面或者折成好多行。通过使用CSS,我们可以限制为一行的宽度,并使多余的字符隐藏。为了方便,做成一个小Web控件来使用。 namespace cnblogs.birdshome.WebControls /// Summary description for AutoLabel. /// [DefaultProperty("Text"), ToolboxData("<{0}:AutoLabel runat=server>")] public class AutoLabel : System.Web.UI.WebControls.Label { protected override void CreateChildControls() { base.CreateChildControls (); this.Width = Unit.Percentage(100); this.Attributes["onmouseover"] = "if ( this.clientWidth < this.scrollWidth ) this.title = this.innerText; else this.title = '';"; this.Attributes.CssStyle["white-space"] = "nowrap"; this.Attributes.CssStyle["overflow"] = "hidden"; this.Attributes.CssStyle["text-overflow"] = "ellipsis"; } } } AutoLabel继承至Label控件,默认宽度为"100%",当把AutoLabel放入容器类元素中后,其内容的宽度受容器大小自动调整。并且当AutoLabel出现"..."号后,鼠标放在上面,其ToolTip会自动显示器完整内容。如下图:
Asp.Net细节性问题精萃分类:技术共享 1. 与 的区别: 2.控件接收哪些类型数据? 3.DataBind,获得的数据,系统会将其默认为String,怎样转化为其它的类型? 4.主要命名空间: 5.Connections(SQLConection 或者 ADOConnection)的常用属性和方法:
7.打开和关闭数据库两种方法: 8.使用DataSet,在数据库中增加、修改、删除一个数据 b.修改数据 c.删除数据 d.恢复数据 f.更新数据库 PagerStyle-NextPageText="下一页" //把<>改为上一页和下一页字符串 PagerStyle-Mode="NumericPages" //把<>改为123数字显示 12.要将页面重置为有效的状态 this.EnsureChildControls();//表示将复合控件的子控件都呈现到页面上,此方法检查服务器控件是否包含子控件 CreateChildControls
|