ASP.NET控件开发基础之类型转换器1.认识默认属性浏览器支持
让我们再认识一下属性,大家知道每个属性都是有类型的,最熟悉就是string,int这些类型了,VS2005属性浏览器对这些属性类型进行了识别,
如下例子
(1)table控件的Height属性,当你设置属性为字符串时,则提示错误信息
(2)当属性类型为Color属性时,属性浏览器为你提供颜色选择器
(3)当属性类型为枚举类型时,属性浏览器则支持下拉框选择
(4)当类型是时间类型,属性浏览器则支持时间选择器
通过上面,我们认识到属性浏览器默认会判别属性类型,当属性值跟属性类型不符时,则会提示错误信息.这里我们还认识到属性浏览器默认为一些属性类型提供了便利
ASP.NET控件开发基础之类型转换器2.属性表现形式的多样性
在定义控件属性时,可以直接这样定义,属性都为字符串形式
﹤asp:TextBox ID="TextBox1" runat="server" Height="11" BackColor="Blue" ForeColor="#FF8000"﹥测试﹤/asp:TextBox﹥
用代码表示则是这样, ......
集合属性相信大家都很熟悉也很常用,如DropDownList,ListBox等控件
﹤asp:DropDownList ID="DropDownList1" runat="server"﹥ ﹤asp:ListItem﹥测试1﹤/asp:ListItem﹥ ﹤asp:ListItem﹥测试2﹤/asp:ListItem﹥ ﹤asp:ListItem﹥测试3﹤/asp:ListItem﹥ ﹤/asp:DropDownList﹥
ASP.NET控件开发基础之实现控件集合属性1.实现集合属性效果
经过前面几篇的学习,相信这一篇看起来已经相对简单了.我们要做的就是,先定义一个复杂属性,然后用迭代语句获取数组数据即可.
如果看过前面几篇就看看下面代码吧,相信看起来很简单,我们模仿一个DropDownList,为其属性添加背景属性,代码如下
先定义一个集合属性,如下
public class DropItem   ......
html知识,Request.Form
接收的是Name值,而非ID值
若是用aspx页面取值,表单中的runat="server"要去掉。
asp.net知识,asp.net的控件的ID和Name值是一样第,但是其在客户端表现是control.clientID而非
control.ID
asp.net本身也是可以跨页提交滴,如果是使用自己带的跨页提交就不存在上述问题,不过asp.net自己带的跨页提交有另外的接
收方式
实例
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
" >
<head>
<title>无标题页</title>
</head>
<body>
<form id="formPost" action="Default.aspx" method="post">
<div>
<input name="txtPostValue" type="text" />
&nb ......
1.ASP.NET中使用AJAX时如何弹出对话框
举例如下:
ScriptManager .RegisterStartupScript (UpdatePanel1, UpdatePanel1.GetType(), "", "alert('成功')", true)
下面这个复杂些
ScriptManager .RegisterStartupScript (UpdatePanel1, UpdatePanel1.GetType(), "", "alert('提示:产品添加成功!');if(confirm('是否继续添加?取消转到产品管理页')){alert('本页面继续添加')}else{open('productManage.aspx','_self');}", true)
2.点击页面上的按钮,弹出一个对话框提示是“确定”还是“取消”操作,在按钮中添加属性来完成
举例如下:
public System.Web.UI.WebControls.Button btnDelRow;
btnDelRow.Attributes.Add("onclick", "return confirm('确定要删吗?');");
3.对于页面完成一个操作后,弹出一个对话框提示是否“操作成功”
举例如下:
Response.Write("<mce:script type="text/javascript"><!--
alert('删除成功!')
// --></mce:script>");
Response.Write("<mce:script type="text/javascript"><!--
alert('发表主题成功!');location='../JLYGT/ThemeManager.aspx';
// --></mc ......
在asp.net中的Session存储方式不象asp那样单一,一共提供了三种存储方式,由于最近一个2000多人使用的web软件出现了故障,用户每天早上在某一时刻出现难以登陆现象,接着Session丢值出现,只有重启IIS,或机器.这时程序恢复正常了.整天都不会出现同样的问题 ,但是第二天依旧!这种现象持续了好几天,我检查了一下日志文件,高峰每秒访问人数大概20人左右,同时大概100多人在线,以后访问人数还会增加,为了解决这个怪问题,先从软件着手,故而三种方式都应用了一番。
打开web.config文件
< sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
其中默认的mode是InProc类型,这种模式和以前ASP模式一样,就是服务器将Session信息存储在IIS进程当中,当IIS关闭、重起后这些进程信息都会丢失,但这种模式的性能最高(具体没测,看书上说),这种模式是asp.net的默认方式。
由于这种模式出现了故障,当时我的考虑就是由于访问量过大的原因,导致Inetinfo.exe进程崩溃。用户难以登陆以致Session丢值出现故障,我采用了另外一种Session的 ......
关于数据处理相关的优化
一、 SqlDataRead和Dataset的选择
Sqldataread优点:读取数据非常快。如果对返回的数据不需做大量处理的情况下,建议使用SqlDataReader,其性能要比datset好很多。缺点:直到数据读完才可close掉于数据库的连接
(SqlDataReader 读数据是快速向前的。SqlDataReader 类提供了一种读取从 SQL Server 数据库检索的只进数据流的方法。它使用 SQL Server 的本机网络数据传输格式从数据库连接直接读取数据。DataReader需及时显式的close。可及时的释放对数据的连接。)
Dataset是把数据读出,缓存在内存中。缺点:对内存的占用较高。如果对返回的数据需做大量的处理用Dataset比较好些可以减少对数据库的连接操作。优点:只需连接一次就可close于数据库的连接
*一般情况下,读取大量数据,对返回数据不做大量处理用SqlDataReader.对返回数据大量处理用datset比较合适.对SqlDataReader和Dataset的选择取决于程序功能的实现。
二、 ExecuteNonQuery和ExecuteScalar
对数据的更新不需要返回结果集,建议使用ExecuteNonQuery。由于不返回结果集可省掉网络数据传输。它仅仅返回受影响的行数。如果只需更新数据用ExecuteNonQuery性能的开销比较小。
Exe ......