030. asp.net中DataList数据绑定跳转(两种方式)的完整示例
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" MaintainScrollPositionOnPostback="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server" style=" font-size: 9pt">
<div>
<table style="width: 590px; height: 218px;" cellpadding="0" cellspacing="0">
<tr>
<td style="width: 112px; height: 240px">
<asp:DataList ID="DataList1" runat="server" Width="239px" CellPadding="0"
Height="61px" onitemcommand="DataList1_ItemCommand"
onitemdatabound="DataList1_ItemDataBound">
<HeaderTemplate>
<table border="1" cellpadding="0" cellspacing="0" style="width: 300px; text-align: center;">
<tr>
<td colspan="4" style="font-size: 16pt; color: #006600; text-align: center">
分页显示DataList控件中的数据</td>
</tr>
<tr>
<td style="height: 19px; width: 50px; color: #669900;">
编号</td>
<td style="height: 19px; width: 50px; color: #669900;">
姓名</td>
<td style="height: 19px; width: 50px; color: #669900;">
性别</td>
<td style="width: 150px; height: 19px; color: #669900;">
内编号</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table border="1" cellpadding="0" cellspacing="0" style="width: 300px; color: #000000;
text-align: center;">
<tr>
<td style="height: 21px; width: 50px; color: #669900;">
<asp:Label ID="lblStuID" runat="server" Text='<%# Eval("cardNo") %>'></asp:Label></td>
<td style="height: 21px; width: 50px; color: #669900;">
<asp:Label ID="lblStuName" runat="server" Text='<%# Eval("name") %>'></asp:Label></td>
<td style="height: 21px; width: 50px; color: #669900;">
<asp:Label ID="lblStuSex" runat="server" Text='<%# Eval("sex") %>'></asp:Label></td>
<td style="width: 150px; height: 21px; color: #669900;">
<asp:Label ID="lblstuHobby" runat="server" Text='<%# Eval("cardBound") %>'></asp:Label></td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate>
<table style="width: 500px" cellpadding="0" cellspacing="0">
<tr>
<td style="width: 71px; height: 4px" valign="middle">
共有<asp:Label ID="labCount" runat="server" ForeColor="#FF3300" Width="12px"/>页</td>
<td style="width: 73px; height: 4px" valign="middle">
当前<asp:Label ID="labNowPage" runat="server" ForeColor="Brown">1</asp:Label>页</td>
<td style="width: 46px; height: 4px" valign="middle">
<asp:LinkButton ID="lnkbtnFirst" runat="server" CommandName="first"
Font-Underline="False" ForeColor="Black" Width="43px">首页</asp:LinkButton></td>
<td style="width: 55px; height: 4px" valign="middle">
<asp:LinkButton ID="lnkbtnFront" runat="server" CommandName="pre"
Font-Underline="False" ForeColor="Black" Width="62px">上一页</asp:LinkButton></td>
<td style="width: 51px; height: 4px" valign="middle">
<asp:LinkButton ID="lnkbtnNext" runat="server" CommandName="next"
Font-Underline="False" ForeColor="Black" Width="61px">下一页</asp:LinkButton></td>
<td style="width: 29px; height: 4px" valign="middle">
<asp:LinkButton ID="lnkbtnLast" runat="server" Font-Overline="False" CommandName="last"
Font-Underline="False" ForeColor="Black" Width="38px">尾页</asp:LinkButton></td> <%--文本框输入方式实现的页面跳转--%>
<%-- <td style="width: 200px; height: 4px" valign="middle"> 跳转至:<asp:TextBox ID="txtPage" runat="server" Width="25px" Height="21px"></asp:TextBox>
<asp:Button ID="Button1" runat="server" CommandName="search" Text="GO"
Height="19px" />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="txtPage" ErrorMessage="请输入数字(除了数值0)"
ValidationExpression="[1-9]+(\d)*"></asp:RegularExpressionValidator>
</td>--%> <%--下拉列表方式实现的页面跳转--%>
<td style="width: 200px; height: 4px" valign="middle"> 跳转至:
<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
<asp:Button ID="Button1" runat="server" CommandName="search" Text="GO"
Height="19px" />
</td>
</tr>
</table>
</FooterTemplate>
</asp:DataList>
</td>
</tr>
<tr>
<td style="width: 112px; height: 12px">
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
后台cs代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page
{
protected static PagedDataSource ps = new PagedDataSource();//创建一个分页数据源的对象且一定要声明为静态
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind();//数据绑定
}
}
//进行数据绑定的方法
public void Bind(int CurrentPage)
{
//实例化SqlConnection对象
SqlConnection sqlCon = new SqlConnection();
//实例化SqlConnection对象连接数据库的字符串
sqlCon.ConnectionString = "server=.;uid=sa;pwd=123.456;database=TYW";
//定义SQL语句
string SqlStr = "select * from card";
//实例化SqlDataAdapter对象
SqlDataAdapter da = new SqlDataAdapter(SqlStr, sqlCon);
//实例化数据集DataSet
DataSet ds = new DataSet();
da.Fill(ds, "cardInfo"); ps.DataSource = ds.Tables["cardInfo"].DefaultView;
ps.AllowPaging = true; //是否可以分页
ps.PageSize = ; //每页显示的条数
ps.CurrentPageIndex = CurrentPage; //取得当前页的页码 this.DataList1.DataSource = ps;
this.DataList1.DataKeyField = "cardNo";
this.DataList1.DataBind();
} protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
switch (e.CommandName)
{
//以下5个为 捕获用户点击 上一页 下一页等时发生的事件
case "first"://第一页
ps.CurrentPageIndex = ;
Bind(ps.CurrentPageIndex);
break;
case "pre"://上一页
ps.CurrentPageIndex = ps.CurrentPageIndex - ;
Bind(ps.CurrentPageIndex);
break;
case "next"://下一页
ps.CurrentPageIndex = ps.CurrentPageIndex + ;
Bind(ps.CurrentPageIndex);
break;
case "last"://最后一页
ps.CurrentPageIndex = ps.PageCount - ;
Bind(ps.CurrentPageIndex);
break;
case "search"://页面跳转页
if (e.Item.ItemType == ListItemType.Footer)
{
int PageCount = int.Parse(ps.PageCount.ToString());
DropDownList ddl = e.Item.FindControl("DropDownList1") as DropDownList;
int MyPageNum = ;
MyPageNum = Convert.ToInt32(ddl.SelectedValue);
if (MyPageNum <= || MyPageNum > PageCount)
Response.Write("<script>alert('请输入页数并确定没有超出总页数!')</script>");
else
Bind(MyPageNum - );
}
break;
}
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Footer)
{
//以下六个为得到脚模板中的控件,并创建变量
Label CurrentPage = e.Item.FindControl("labNowPage") as Label;
Label PageCount = e.Item.FindControl("labCount") as Label;
LinkButton FirstPage = e.Item.FindControl("lnkbtnFirst") as LinkButton;
LinkButton PrePage = e.Item.FindControl("lnkbtnFront") as LinkButton;
LinkButton NextPage = e.Item.FindControl("lnkbtnNext") as LinkButton;
LinkButton LastPage = e.Item.FindControl("lnkbtnLast") as LinkButton;
CurrentPage.Text = (ps.CurrentPageIndex + ).ToString();//绑定显示当前页
PageCount.Text = ps.PageCount.ToString();//绑定显示总页数
if (ps.IsFirstPage)//如果是第一页,首页和上一页不能用
{
FirstPage.Enabled = false;
PrePage.Enabled = false;
}
if (ps.IsLastPage)//如果是最后一页"下一页"和"尾页"按钮不能用
{
NextPage.Enabled = false;
LastPage.Enabled = false;
} DropDownList ddl = e.Item.FindControl("DropDownList1") as DropDownList;
ddl.Items.Clear();
for (int i = ; i <= ps.PageCount; i++)
{
ddl.Items.Add(i.ToString());
}
}
}
}
030. asp.net中DataList数据绑定跳转(两种方式)的完整示例的更多相关文章
- c#ASP.NET中页面传值共有这么几种方式
一.目前在ASP.NET中页面传值共有这么几种方式: 1.Response.Redirect("http://www.hao123.com",false); 目标页面和原页面可以在 ...
- 在asp.net中使用confirm可以分为两种:
在asp.net中使用confirm可以分为两种: 1.没有使用ajax,confirm会引起也面刷新 2.使用了ajax,不会刷新 A.没有使用ajax,可以用StringBuilder来完成. ( ...
- 怎样在Android开发中FPS游戏实现的两种方式比较
怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...
- strus2中获取表单数据 两种方式 属性驱动 和模型驱动
strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值 * 如果一个属性在对象栈,在页面 ...
- HTML中设置背景图的两种方式
HTML中设置背景图的两种方式 1.background background:url(images/search.png) no-repeat top; 2.background-image ...
- [Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)
接上文: https://www.cnblogs.com/wukong1688/p/10693338.html Android ViewPager 中加载 Fragmenet的两种方式 方式(一) 二 ...
- [Android] Android ViewPager 中加载 Fragment的两种方式 方式(一)
Android ViewPager 中加载 Fragmenet的两种方式 一.当fragment里面的内容较少时,直接 使用fragment xml布局文件填充 文件总数 布局文件:view_one. ...
- .Net 中读写Oracle数据库常用两种方式
.net中连接Oracle 的两种方式:OracleClient,OleDb转载 2015年04月24日 00:00:24 10820.Net 中读写Oracle数据库常用两种方式:OracleCli ...
- 【转】在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)
在Android Studio中下载Android SDK的两种方式(Android Studio3.0.windows) 方式一.设置HTTP Proxy1. 打开Settings2. 点击HTTP ...
随机推荐
- springMVC,mybatis配置事务
首先应该对context:include-filter和context:exclude-filter有一个了解,include是包含这个,而不是只包含,下面会有例子看看: 这是我最开始配置的MVC的配 ...
- [分享] RT7LITE精简后无法封装解决办法
eagleonly 发表于 2016-6-9 11:00:01 https://www.itsk.com/forum.php?mod=viewthread&tid=368090&hi ...
- python内置函数 1
常用函数 abs(x) abs()返回一个数字的绝对值.如果给出复数,返回值就是该复数的模. >>>print abs(-100) 100 >>>print abs ...
- WPF:带复选框CheckBox的树TreeView
最近要用WPF写一个树,同事给了我一个Demo(不知道是从哪里找来的),我基本上就是参照了这个Demo. 先放一下效果图(3棵树): 这个树索要满足的条件是: 父节点.Checked=true时,子节 ...
- 类库、委托、is as运算符、泛型集合
类库: 说白了,就是让别人调用你写的方法,并且不让别人看到你是怎么实现的. 如果有功能你不会做,需要别人帮忙,那么你的同事可以帮你写好一个类,然后你来调用这个类中的方法,完成你的项目. 1.C#源代码 ...
- ASP.NET——生成验证码
实现:随机生成四位数字的验证码,点击验证码可无刷新生成新的验证码,最后点击按钮进行检验 PS:本实例使用UpdatePanel实现无刷新. 前台代码: <asp:ScriptManager ID ...
- 1、android源代码下载及目录分析,和eclipser的跟踪
1.在eclipse中跟踪源代码:假如对mainactivity.java里面的activity按Ctrl+鼠标左键(前提已经导入android源代码:方法1:在项目点击右键,然后找到properti ...
- Windows 2012 装 Remote Desktop Organizer 无法连接到其他远程服务器
一句话,版本太低 换Remote Desktop Organizer 1.4.5版本就ok 了
- samba 配置
sudo apt-get install samba sudo apt-get install kdenetwork-filesharing vi /etc/samba/smb.conf [Share ...
- zookeeper命令行(zkCli.sh&zkServer.sh)使用及四字命令
zookeeper提供了很多方便的功能,方便我们查看服务器的状态,增加,修改,删除数据(入口是zkServer.sh和zkCli.sh). 还提供了一系列四字命令,方便我们跟服务器进行各种交互,来确认 ...