当前位置:  编程技术>.net/c#/asp.net
本页文章导读:
    ▪如何在asp.net eval中使用if语句进行判断      前台<%# BindTitle(Eval("Title"))>后台的.cs文件中写一个方法,如下:public string BindTitle(object title){if (title.ToString().Length<5){ title.ToString();}else{ title.ToString().Substring(0,5);} }本文链接......
    ▪数据绑定以及Container.DataItem几种方式与用法,效率分析       灵活的运用数据绑定操作        绑定到简单属性:<%#UserName%>        绑定到集合:<asp:ListBox id="ListBox1" datasource='<%# myArray%>' runat=".........
    ▪Repeater 分页 实现      ASP.NET中的DataList和Repeater提供了简单快速的方法來显示,其间,我们可以使用<ItemTemplate>更是使我们能随心所欲的控制数据的排放样式!可惜的是它们不像Datagrid那样,有内置的分页功能。.........

[1]如何在asp.net eval中使用if语句进行判断
    来源:    发布时间: 2013-10-28
前台<%# BindTitle(Eval("Title"))>
后台的.cs文件中写一个方法,如下:
public string BindTitle(object title){
if (title.ToString().Length<5)
{
title.ToString();
}
else
{
title.ToString().Substring(0,5);
}


}

本文链接


    
[2]数据绑定以及Container.DataItem几种方式与用法,效率分析
    来源:    发布时间: 2013-10-28

 

灵活的运用数据绑定操作
        绑定到简单属性:<%#UserName%>
        绑定到集合:<asp:ListBox id="ListBox1" datasource='<%# myArray%>' runat="server">
        绑定到表达式:<%#(class1.property1.ToString() + "," + class1.property2.ToString())%>
        绑定到方法返回值:<%# GetSafestring(str) %>
        绑定到Hashtable:<%# ((DictionaryEntry)Container.DataItem).Key%>
        绑定到ArrayList:<%#Container.DataItem %>

 

        若数组里里放的是对象则可能要进行必要的转换后再绑定如:
        <%#((对象类型)Container.DataItem).属性%>

 

        绑定到DataView,DataTable,DataSet:
        <%#((DataRowView)Container.DataItem)["字段名"]%>或
        <%#((DataRowView)Container.DataItem).Rows[0]["字段名"]%>
        要格式化则:
        <%#string.Format("格式",((DataRowView)Container.DataItem)["字段名"])%>
        <%#DataBinder.Eval(Container.DataItem,"字段名","格式")%>

 

        绑定到DataReader:
        <%#((IDataReader)Container.DataItem).字段名%>

 

        当然为了方便一般使用最多的就是DataBinder类的Eval方法了.不过这样对于同时要绑定大量的数据效率要低一些

 

在绑定数据时经常会用到这个句程序:<%# DataBinder.Eval(Container.DataItem,"xxxx")%>或者<%# DataBinder.Eval(Container,"DataItem.xxxx")%>

今天又学到一种,而且微软也说这种方法的效率要比以上两种高。

<%# ((DataRowView)Container.DataItem)["xxxx"]%>

很有用的,这样可以在前台页面做好多事情了。

还要记住要这样用必须要在前台页面导入名称空间System.Data,否则会生成错误信息。

<%@ Import namespace="System.Data" %>

这种用法其实和<%# ((DictionaryEntry)Container.DataItem).Key%>是一个道理。

绑定到DataSet、DataTable时:

<%#((System.Data.DataRowView)Container.DataItem)["字段名"]%>
<%#((System.Data.DataRowView)Container.DataItem)[索引]%>

绑定到DataReader时:
<%#((System.Data.Common.DbDataRecord)Container.DataItem)[索引]%>
<%#((System.Data.Common.DbDataRecord)Container.DataItem)["字段名"]%>

关键是Container这个东西,它比较神秘。它的名称空间是System.ComponentModel。对于它我还需要进一步理解。  

初学.NET,现在在看DataGrid控件,在ItemTemplate显示数据时,
DataBinder.Eval(Container.DataItem,"Name")和Container.DataItem("Name")有什么区别?

DataBinder是System.Web里面的一个静态类,它提供了Eval方法用于简化数据绑定表达式的编写,但是它使用的方式是通过Reflection等开销比较大的方法来达到易用性,因此其性能并不是最好的。而Container则根本不是任何一个静态的对象或方法,它是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量,其类型是可以进行数据绑定的控件的数据容器类型(如在Repeater内部的数据绑定容器叫RepeaterItem),在这些容器类中基本都有DataItem属性,因此你可以写Container.DataItem,这个属性返回的是你正在被绑定的数据源中的那个数据项。如果你的数据源是DataTable,则这个数据项的类型实际是DataRowView。

本文链接


    
[3]Repeater 分页 实现
    来源:    发布时间: 2013-10-28

ASP.NET中的DataList和Repeater提供了简单快速的方法來显示,其间,我们可以使用<ItemTemplate>更是使我们能随心所欲的控制数据的排放样式!

可惜的是它们不像Datagrid那样,有内置的分页功能。
如何解决呢?
其实我们可以用【PagedDataSource】 类来解决分页的问题。
PagedDataSource类的属性:
DataSource -数据源
AllowPaging - true 是否允许分页.
PageSize - 每页项目数量
PageCount - 总页数
CurrentPageIndex - 当前所在的页索引
以Repeater为例 代码如下:

 

//Result.aspx.cs 文件

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace comeday
{
 /// <summary>
 /// Result 的摘要说明。
 /// </summary>
 public class Result : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.HyperLink lnkPrev;
  protected System.Web.UI.WebControls.HyperLink lnkNext;
  protected System.Web.UI.WebControls.Label lblCurrentPage;
  protected System.Web.UI.WebControls.Label lblTotalPage;
  protected System.Web.UI.WebControls.Repeater Repeater1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
//   数据源
   PagedDataSource Pgds=new PagedDataSource();
//        
   Pgds.DataSource=CreateDataSource().DefaultView;
//        设置允许分页
   Pgds.AllowPaging=true;
//        每页显示为6行
   Pgds.PageSize=6;
//        显示总共页数
//
   lblTotalPage.Text=Pgds.PageCount.ToString();
//        当前页
   int CurrentPage;
//        请求页码为不为null设置当前页,否则为第一页
   if(Request.QueryString["Page"] != null)
   {
    
    CurrentPage = Convert.ToInt32(Request.QueryString["Page"]);
   }

   else
   {

    CurrentPage = 1;
   }
//   当前页所引为页码-1
   Pgds.CurrentPageIndex = CurrentPage - 1;
//   显示当前页码
   lblCurrentPage.Text = CurrentPage.ToString();
//   如果不是第一页,通过参数Page设置上一页为当前页-1,否则不显示连接
   if(!Pgds.IsFirstPage)
   {
    //            Request.CurrentExecutionFilePath为当前请求虚拟路径
    lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage - 1);
   }
//        End If
//   如果不是最后一页,通过参数Page设置下一页为当前页+1,否则不显示连接
   if(!Pgds.IsLastPage)
   {
//    Request.CurrentExecutionFilePath为当前请求虚拟路径
    lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage + 1);
   }
//   模板绑定数据源  
   Repeater1.DataSource = Pgds;
   Repeater1.DataBind();

  }
  /// <summary>
  /// 生成数据源(一个Datatable)
  /// </summary>
  /// <returns></returns>
public DataTable CreateDataSource()
{
  DataTable dt; 
  DataRow dr;
  dt=new DataTable();
 //添加列
        dt.Columns.Add(new DataColumn("IntegerValue", System.Type.GetType("System.Int32")));
        dt.Columns.Add(new DataColumn("StringValue", System.Type.GetType("System.String")));
        dt.Columns.Add(new DataColumn("DateTimeValue", System.Type.GetType("System.DateTime")));
        dt.Columns.Add(new DataColumn("BoolValue", System.Type.GetType("System.Boolean")));
 //填充数据
 for( int i=0;i<50;i++)
 {
  dr = dt.NewRow();
  dr[0] = i;
  dr[1] = "Item " + i.ToString();
  dr[2] = DateTime.Now.ToShortTimeString();
  if(i%2!=0)
  {
   dr[3] = true;
  }
  else
  {
   dr[3] = false;
  }
  dt.Rows.Add(dr);
 }
 return dt;

}
  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {    
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion
 }
}
===========================================================================

Result.aspx文件

//<%@ Page Language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="false" Inherits="comeday.Result" %>
//<%@ import Namespace="System.Data" %>
//<HTML>
//<HEAD>
//<title>DataRepeater</title>
//<style type="text/css">
//
//BODY 
//{
// FONT: 10px Verdana, Arial, Helvetica, "sans serif"; COLOR: #000000 }
//
//.txt { FONT-SIZE: 12px }
//
//</style>
//</HEAD>
//<body>
//<form id="Form2" name="form1" method="post" runat="server">
//<table width="100%" border="0">
//     <tbody>
//     <tr>
//     <td>
//     <asp:hyperlink id="lnkPrev" runat="server">上页</asp:hyperlink>
//     <asp:hyperlink id="lnkNext" runat="server">下页</asp:hyperlink>第
//                   <asp:label id="lblCurrentPage" runat="server"></asp:label>
//     页 共
//      <asp:label id="lblTotalPage" runat="server"></asp:label>页
//                     </td>
//     </tr>
//     </tbody>
//     </table>
//     <asp:repeater id="Repeater1" runat="server">
//     <ItemTemplate>
//     <hr align="left" width="60%" size="1">
//     <table width="100%" border="0">
//       <tr>
//       <td>
//       Order Date:
//       <%# DataBinder.Eval(Container.DataItem, "DateTimeValue", "{0:d}") %>
//       </td>
//       <tr>
//       <td>
//       Quantity:
//       <%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:N2}") %>
//       </td>
//       <tr>
//       <td>
//       Item:
//       <%# DataBinder.Eval(Container.DataItem, "StringValue") %>
//       </td>
//       <tr>
//       <td>
//       Order Date:
//       <asp:checkbox id=chk1 checked='<%# DataBinder.Eval(Container.DataItem, "BoolValue") %>' runat="server"/>
//       </td>
//       </tr>
//       </table

    
最新技术文章:
▪C#通过IComparable实现ListT.sort()排序
▪C#实现对Json字符串处理实例
▪Winform实现抓取web页面内容的方法
▪Winform实现将网页生成图片的方法
▪WinForm实现同时让两个窗体有激活效果的特效... iis7站长之家
▪WinForm实现同时让两个窗体有激活效果的特效...
▪WinForm实现拦截窗体上各个部位的点击特效实...
▪用C#的params关键字实现方法形参个数可变示例
▪C#判断某程序是否运行的方法
▪C#验证码识别基础方法实例分析
▪C#通过WIN32 API实现嵌入程序窗体
▪C#实现获取鼠标句柄的方法
▪C#事件处理和委托event delegate实例简述
▪C#获取程序文件相关信息的方法
▪C#中的除法运算符与VB.NET中的除法运算符
▪ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedLi...
▪Base64编码解码原理及C#编程实例
▪C#实现的优酷真实视频地址解析功能(2014新算...
▪C#和SQL实现的字符串相似度计算代码分享
▪C#使用Word中的内置对话框实例
▪C#反射之基础应用实例总结
▪C#生成单页静态页简单实例
▪C#实现SMTP邮件发送程序实例
▪C#实现随鼠标移动窗体实例
▪C#使用GDI+创建缩略图实例
▪C#实现通过模板自动创建Word文档的方法
▪C#中Response.Write常见问题汇总
▪C#中多态、重载、重写区别分析
▪WinFrom中label背景透明的实现方法
▪C#中out保留字用法实例分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3