dataset gridview的绑定、request取参数、页面与源码分离、路径引用、sql数值转换、sql分页
1. 用dataset 给gridview绑定数据
1)调用gridview.bind()方法后触发事件,OnRowDataBound,显示内部执行每一行
2)绑定显示值,如让“1” 显示为“男”,则使用
<%# Eval("Sn") == null ? "无" : Eval("Sn")%>,期中“Sn”为数据查询的某字段名,绑定Sn
3) 绑定某一标签,可以让其显示其他类型值,如某地址为很长一串,但只显示部分长度,多余部分当鼠标放置上面时显示
<ItemTemplate>
<asp:Label ID="lbWorkUnit" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
给gridview的事件OnRowDataBound注册方法,使用 gv.DataSource = TestObjectList; gv.DataBind(); 触发绑定事件,则在其中处理
{
if (e.Row.RowIndex < 0)
return;
TestObjects oneEntity = (TestObjects)e.Row.DataItem;
Label WorkUnit = (Label)e.Row.FindControl("lbWorkUnit");
if (!string.IsNullOrEmpty(partyMember.WorkUnit)) //类别
{
WorkUnit.Text = oneEntity.WorkUnit.Length > 10 ? oneEntity.WorkUnit.Substring(0, 10) + "..." : oneEntity.WorkUnit;
WorkUnit.ToolTip = oneEntity.WorkUnit;
}
}
2. request对象使用时,在url后输入?号则可以使用Request.QueryString来得到其传输的值
如:地址为:http://localhost:13310/Admin/UI/Pages/TalentTest/TalentTestReturn.aspx?ReportUrl=http://baidu.com&TestName=TestName&TestId=1233&ActivityName=测试活动&Sn=50322067
则,可用下获得其值
string reportUrl = Request.QueryString["ReportUrl"];
string testName = Request.QueryString["TestName"];
string TestId = Request.QueryString["TestId"];
3. 将.aspx与.aspx.cs .aspx.desinger.cs分离, 在.aspx源下更改其CodeBehind="~/UI/Controls/ShowRecentSmsReplyCtrl.ascx.cs"即可
4. 读取webconfig中值
ConfigurationManager.AppSetting["名称"],获取AppSetting中相关设置的值
5. 路径引用
1)读取系统根目录的URL地址url
Url = UrlScheme + System.Web.HttpContext.Current.Request.Url.Authority + System.Web.HttpContext.Current.Request.ApplicationPath;
2)读取系统根目录的物理路径,可以读取硬盘上文件
3).aspx 内.js文件、控件.ascx、及图片 的访问路径,如
<img alt="图片" border="0" src="/Themes/Subindex/Default/images/index_12.gif" width="53" height="123" />
后台代码的访问路径 ,用“~“代替上级路径
CodeBehind="~/UI/Controls/MarqueeImagesCtrl.ascx.cs"
引用控件路径,用".."代替上级路径
<%@ Register Src="../Controls/ShowRecentSmsReplyCtrl.ascx" TagName="TalentTestDisp" TagPrefix="uc1" %>
6.数据库的值类型转换,如int 到 varchar(50)
1)cast(列1 as varchar(50)) 如cast (RecId as varchar(20))
2)convert
7. sql分页
使用with 前根据需要加“;” 号
With SQLPaging
(
Select Top(@rowstart+@rowcount) ROW_NUMBER() OVER (ORDER BY id) as resultNum,
MemberName
FROM Member
)
select * from SQLPaging where resultNum > @rowstart
其中 @rowstart起始的位置,可以为(页数-1)*页数行数
1)另转: http://www.cnblogs.com/morningwang/archive/2009/01/02/1367277.html
方法1:适用于 SQL Server 2000/2005
FROM table1
WHERE id NOT IN
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
)
ORDER BY id
方法2:
适用于 SQL Server 2000/2005
FROM table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
FROM
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
) A
)
ORDER BY id
方法3:
适用于 SQL Server 2005
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber > 页大小*(页数-1)
说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”和“页大小*(页数-1)”替换成数字。
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
2)关于效率比较http://www.cnblogs.com/linckle/archive/2007/07/20/825629.html