dataset gridview的绑定、request取参数、页面与源码分离、路径引用、sql数值转换、sql分页

1. 用dataset 给gridview绑定数据

  1)调用gridview.bind()方法后触发事件,OnRowDataBound,显示内部执行每一行

  2)绑定显示值,如让“1” 显示为“男”,则使用

    <%# Eval("Sn") == null ? "无" : Eval("Sn")%>,期中“Sn”为数据查询的某字段名,绑定Sn

  3) 绑定某一标签,可以让其显示其他类型值,如某地址为很长一串,但只显示部分长度,多余部分当鼠标放置上面时显示

 

                        <asp:TemplateField HeaderText="工作单位">
                            
<ItemTemplate>
                                
<asp:Label ID="lbWorkUnit" runat="server"></asp:Label>
                            
</ItemTemplate>
                        
</asp:TemplateField>

 

 

 

给gridview的事件OnRowDataBound注册方法,使用 gv.DataSource = TestObjectList; gv.DataBind(); 触发绑定事件,则在其中处理

 protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            
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(010+ "..." : 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

string UrlScheme=System.Web.HttpContext.Current.Request.Url.Scheme + "://";
Url 
= UrlScheme + System.Web.HttpContext.Current.Request.Url.Authority + System.Web.HttpContext.Current.Request.ApplicationPath;

 

   2)读取系统根目录的物理路径,可以读取硬盘上文件

string _AppPath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath;

 

   3).aspx 内.js文件、控件.ascx、及图片 的访问路径,如

 

<script type="text/javascript" src="/Scripts/jquery.fancybox/jquery.easing.1.3.js"></script>

<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 

As 
(  
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
SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
          (
          
SELECT TOP 页大小*(-1) id FROM table1 ORDER BY id
          )
ORDER BY id

方法2:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
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

SELECT TOP 页大小 * 
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 

posted @ 2010-11-24 18:06  名字长不够写  阅读(727)  评论(0编辑  收藏  举报