asp.net学习笔记
1) asp.net中的事件执行顺序:
先运行客户端的onclientclick,再运行sever端的onserverclick。
当点击按钮,以下事件都会重新执行一次,这时的执行顺序为:
1. OnPreInit
2. OnInit
3. OnInitComplete
4. OnPreLoad
5. Page_Load
6. OnLoad
7. Button_Click
8. OnLoadComplete
9. OnPreRender
这跟winform中的事件响应机制差别很大,在webform中触发onclick事件的时候,由于以上事件都会执行一次,所以很有可能造成错误。在赋值之前,这个只很有可能已经在之前的事件中发生变化了,以至于之后的操作发生错误。
2) ispostback
判断是否是第一次加载的页面。通常用在page_load中,
If(!ispostback)
{
初始化页面…
}
如果不设置的话,在我们点击一下按钮的时候,page_load中的代码也会执行一遍,从而导致窗口中的信息回到初始化的状态,用户之后进行的操作就没了。
3) using的用法:
1.using+命名空间:以在程序中直接用命令空间中的类型
2.using+别名:包括详细命名空间信息的具体的类型(2个命名空间中存在重名类型)
using ListViewItem = System.Web.UI.WebControls.ListViewItem;
3. using+语句:定义一个范围,在范围结束时处理对象
离开这个区域后自动Dispose对象
4) ajax 一部加载网页信息,可以局部刷新网页。
$.ajax({
type: "post",
url: "UI.aspx/delete",
dataType: "json",
data: "{'id':'" + e.attr("rowid") + "'}",
contentType: "application/json; charset=utf-8",
success: function () {
alert("成功后进行的操作");
},
error:function(){
alert("失败后进行的操作");
}
});
Ajax({服务器上的函数,客户端的函数})
服务器上的函数:
type 请求类型(GET,POST),默认为GET
url 执行的函数在服务器上的地址 页面(含后缀)/函数的名称
data 发送给服务器的数据,用于传递参数{‘参数名称’:传递的参数},必须是{key:value}的格式
datatype 预期的服务器返回的数据的格式
error 在请求失败后会进入的部分
success 在请求成功后会进入的部分
5) runat=”server”
在html标签中加入这个后就可以在c#端使用这个节点了
但是键入之后再javascript中在动态添加的事件就无法实现了。
6) repeater控件:
这个控件常在实现有重复的项目列表时使用,根据它绑定的数据他会重复执行,直至被绑定的数据源大最后一行。
绑定数据源:
this.repeater.DataSource = mdata;
repeater.DataBind();
repeater的OnItemCommand事件,在repeater中的空间触发事件时被调用,并可以将触发控件中的<asp:LinkButton CommandArgument(指令参数),CommandName(指令名称)/>参数传递给服务器,从而实现事件的定位。
<%# DataBinder.Eval(Container.DataItem,"id") %>得到repeater中被绑定的数据的id标签下的值
Ado.net C#操作sqlserver数据库
using System.Data.SqlClient;
using System.Data; //dataset
//数据库的位置,名称,用户名,密码
static string mypath = "server=.;database=DB_SqlServer;uid=username;pwd=password";
//创建一个连接
Using(SqlConnection mycon = new SqlConnection(mypath))
//返回表中的所有数据,并得到一个dataset,可以直接和asp.Net的控件绑定
Sql=”select * from tabel”
SqlDataAdapter adapter = new SqlDataAdapter(sql, mycon);
mycon.Open();
DataSet ds = new DataSet();
adapter.Fill(ds);
//带有参数的sql执行
string mysql = "insert into img values(@name,@img)";
SqlCommand com = new SqlCommand(sql, mycon);
//将其中的@name,@img替换为指定的值
SqlParameter[] sp = new SqlParameter[] { new SqlParameter(_name, name), new SqlParameter(_path, path) };
com.Parameters.AddRange(sp);
//开始连接数据库
mycon.Open();
//返回操作影响的行数
com.ExecuteNonQuery();