1)关于分页语句
1 not in
select top pageSize * from table where tid not in (select top (pageIndex-1)*pagesize tid from table) ;
--------------或者
select * from ( select *,Row_Number() over(order by id) RowNumber from books ) t where t.RowNumber>=2 and t.RowNumber<=7;
2 使用存储过程
create Procedure GetPageData(
@PageIndex int =1,
@PageSize int =7,
@RowCount int output,
@PageCount int output,)
as
Declare @sql nvarchar(225),@sqlcount nuachar(225)
select @rowcount=count(sid),@pagecount=ceiling( count(sid)+0.0 )/@pagesize from studentsset
@sql='select top '+str(@pagesize)+' * from students,classes where scid=cid and sid not in(select top) ' +str( (@pageIndex)-1 )*pagesize) +'sid from students'
print @sql
exec(@sql)
------------------------执行declare
@rowcount int,@pagecount intexec GetPageData 1,3,@rowcount out ,@pagecount outputselect rowcount,@pagecount
2)关于多次请求如何保持数据自增的问题 1 思路就是:resquest.QueryString[""];viewState[];取得的都是请求页面所在的数据,于本页面即便是相同的变量无关。
3)链接中使用js <a href=' javascript:doDel(2) '></a>
4)对表格的操作
1 删除操作 var tbRows=gel("tbList").rows; //得到指定表格的行的集合
for(i=0;i<tbRows.length;i++) //遍历 {
if(tbRows[i].childNodes[1].innerHTML=idNum){ // 判断是否这一行的id于输入的id是否相等;
gel("tbList").deleteRow(i); //删除这一行 break; } }
2 新增操作
var tbl=gel("tbList"); for(i=0;i<jsonObj.length;i++){
var nRow=tbl.insertRow(-1); //要指定往每一行的后面插入
var nCol1=nRow.insertCell(-1); //往每一单元格的后面插入;
var nCol2=nRow.insertCell(-1); //往每一单元格的后面插入;
nCol1.innerHTML=i+1;
nCol2.innerHTML=jsonObj[i].Atitle;}
3 关于json分页 {"list":[ {"title":"","aid":"" } ] ,"":[ "" ] ,"rowCount":"" ,"pageCount":"" }
4)Web窗体的页面生命周期 页面初始化--加载页面--验证--事件处理--事件处理--页面显示之前--页面卸载;
5)关于服务器端控件
1 var s=document.getElementById("<%=Button1.ClientID %>");
服务器端控件被数据验证控件包裹时,则生成的html的id于控件id不一样;
2 visible=false;将visible属性进行设置后,就不会渲染到客户端。与<div style="visibility:hidden;">虽然不显示,但是占位
置不同,
3 CssClass属性,就是HTML中的class属性。
4 Attribute属性,
6)关于服务器端控件
1 html控件;使用runat=server;的服务器端控件;服务器端控件;
2 虚拟路径~;对于非ruat=server的控件不能代表根路径;即不起作用;
7)关于数据绑定控件--Repeter
1 <%#Eval("Age") %> //就是将遍历当前对象行的属性Age属性值显示。
2 <%#"img/"+Eval("pic1") %> //注意<%# %>就是输出C#语句。 <%#Eval("id","book.aspx?id={0}") %>
3 ItemDataBound事件;每行数据显示都会调用该事件;若要对ItemTemplate中的控件做处理,就需要使用ASP.Net服务器
端控件,并且用e.Item.FindControl根据Id来获得该控件。
4 e.Item.ItemType来判断当前使用的模板是何种类型。
5 ItemCommand事件;只有提交按钮才会触发该事件。
if(e.CommandName.Equals("Del")){ e.CommandArgument... } //因为一行有多个按钮,可用CommandName来判断,并用CommandArgument来获取相应的参数值。
Repeater1.DataBind(); //从数据库中刷新最新的数据;
8)关于数据绑定控件--ListView
1 在删除时,需要参数id,此时注意BLL中删除方法参数id,需要和实体类id大小写一样,并且在Datasource中指定删除选项
的Name属性的参数id一样;并且要在ListView中欧哪个的DataKeyNames的属性值指定其主键。
2 Cache用空间换取时间的技术,无论多少人访问都只访问一次DB,是改进网站性能的第一个手段。
9)关于缓存--页面缓存;数据源缓存;数据缓存
1 页面缓存就是设置<%@ outputcache varyByParam="none"%> //根据URL来缓存;
varyByParam=“id;name” ;则是根据url的参数id或者name的值的不同来分别进行缓存页面。
varyByParam=“*”;则只要参数不一样就会为此页面产生缓存。
2 数据源缓存:则是为datasource设置缓存,就设置属性cacheDuration和Enableaching;
3 局部缓存:Cache.Insert("key",valueObj,null,DateTiem.Now.AddHours(1),TimeSpan.Zero);
10)关于缓存依赖---缓存的消失不依赖于时间,而是内容
1 依赖于文件; System.Web.Caching.CacheDependency cdep=new System.Web.Caching.CacheDependency(filePath);
2 依赖于数据库(轮询机制;通知机制)
alter Trigger tr_Aticle on 表名 for insert,update,delete as ...触发事件后要执行的操作
//实现思路:另增添一张版本记录表,当新闻表中的数据发生改变时,通过触发器就影响了版本记录表(两列),所以就只需要
查看版本记录表中的数据是否发生变化就清空缓存。
11)关于数据绑定控件--GridView(网格,一行是DB中一个记录,一列是DB中一个字段)
1 编辑:RowEdtiong事件,e.NewEditIndex;获得当前编辑行
2 更新:RowUpdating事件,
3 取消:RowCancelingEdit事件;GridView1.EditIndex=-1;取消编辑
4 删除:
GridView1.Rowsp[e.RowIndex].Cells[9].text; //label状态
((Label)GridView1.Rowsp[e.RowIndex].Cells[9].FindControl("....")).text ;//隐藏状态的label,要用自定义模板;
12)关于数据绑定控件--DataList(每一行看做一个对象,组成网格)
1 于Repeter一样只能进行数据的展示,但是它不仅在局限于每一行对应着DB表的每一行;它是将每一行看做一个对象,通
过RepeatColumns来进行设置空间中的每一行展示几个对象。
13)关于数据绑定控件--DetailsView(仅是对一行对象进行展示)

浙公网安备 33010602011771号