DataList控件分页
实现了对DataList的分页 HTML控件的值需要转换web应用程序就可以取到了
![]()
![]()
1![]()
/**//// <summary>
2
/// 当前页数
3
/// </summary>
4
int CurrentPage;
5![]()
/**//// <summary>
6
/// 每页条数
7
/// </summary>
8
int PageSize;
9![]()
/**//// <summary>
10
/// 总页数
11
/// </summary>
12
int PageCount;
13![]()
/**//// <summary>
14
/// 总条数
15
/// </summary>
16
int RecordCount;
17![]()
18![]()
/**//// <summary>
19
/// 页面首次加载
20
/// </summary>
21
/// <param name="sender">发送对象</param>
22
/// <param name="e">事件参数</param>
23
protected void Page_Load(object sender, EventArgs e)
24![]()
{
25
PageSize = 2;//每页数据记录
26![]()
27
if (!IsPostBack)
28![]()
{
29
CurrentPage = 0;//当前页习惯设为0
30
ViewState["PageIndex"] = 0;//页索引也设为0
31![]()
32
//计算总共有多少记录
33
RecordCount = CalculateRecord();
34![]()
35
//计算总共有多少页
36
if (RecordCount % PageSize == 0)
37![]()
{
38
PageCount = RecordCount / PageSize;
39
}
40
else
41![]()
{
42
PageCount = RecordCount / PageSize + 1;
43
}
44![]()
45
this.TotalLbl.Text = PageCount.ToString();//显示总页数
46
ViewState["PageCount"] = PageCount;
47![]()
48
this.DataListBind();
49
}
50
}
51![]()
52![]()
53![]()
/**//// <summary>
54
/// 计算记录数
55
/// </summary>
56
/// <returns></returns>
57
private int CalculateRecord()
58![]()
{
59
try
60![]()
{
61
int recordCount;
62
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());
63
con.Open();
64![]()
65
string sql = "select count(*) as count from cps_adinfo";
66
SqlCommand cmd = new SqlCommand(sql, con);
67
SqlDataReader sdr = cmd.ExecuteReader();
68![]()
69
if (sdr.Read())
70![]()
{
71
recordCount = Int32.Parse(sdr["count"].ToString());
72
}
73
else
74![]()
{
75
recordCount = 0;
76
}
77![]()
78
sdr.Close();
79
con.Close();
80![]()
81
return recordCount;
82
}
83![]()
84
catch (Exception ex)
85![]()
{
86
throw new Exception(ex.Message);
87
}
88
}
89![]()
90![]()
91![]()
/**//// <summary>
92
/// 将数据绑定到Datalist控件
93
/// </summary>
94
public void DataListBind()
95![]()
{
96
try
97![]()
{
98
int StartIndex = CurrentPage * PageSize;//设定导入的起终地址
99![]()
100
string sql = "select * from cps_adinfo";
101![]()
102
DataSet ds = new DataSet();
103
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"].ToString());
104
con.Open();
105![]()
106
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
107
//Fill方法的第一次重载
108
sda.Fill(ds, StartIndex, PageSize, "cps_adinfo");
109![]()
110
this.TextDataList.DataSource = ds.Tables["cps_adinfo"].DefaultView;
111
this.TextDataList.DataBind();
112
this.PreviousLB.Enabled = true;
113
this.NextLB.Enabled = true;
114
if (CurrentPage == (PageCount - 1)) this.NextLB.Enabled = false;//当为最后一页时,下一页链接按钮不可用
115
if (CurrentPage == 0) this.PreviousLB.Enabled = false;//当为第一页时,上一页按钮不可用
116
this.CurrentLbl.Text = (CurrentPage + 1).ToString();//当前页数
117![]()
118
}
119![]()
120
catch (Exception ex)
121![]()
{
122
throw new Exception(ex.Message);
123
}
124
}
125![]()
126![]()
/**//// <summary>
127
/// 按钮点击事件
128
/// </summary>
129
/// <param name="sender"></param>
130
/// <param name="e"></param>
131
public void LinkButton_Click(Object sender, CommandEventArgs e)
132![]()
{
133
CurrentPage = Int32.Parse(ViewState["PageIndex"].ToString());//获得当前页索引
134
PageCount = Int32.Parse(ViewState["PageCount"].ToString());//获得总页数
135![]()
136
string cmd = e.CommandName; //判断cmd,以判定翻页方向
137
switch (cmd)
138![]()
{
139
case "prev"://上一页
140
if (CurrentPage > 0) CurrentPage--;
141
break;
142![]()
143
case "next":
144
if (CurrentPage < (PageCount - 1)) CurrentPage++;//下一页
145
break;
146![]()
147
case "first"://第一页
148
CurrentPage = 0;
149
break;
150![]()
151
case "end"://最后一页
152
CurrentPage = PageCount - 1;
153
break;
154![]()
155
case "jump"://跳转到第几页
156
if (this.TextBox1.Value.Trim() == ""
157
|| Int32.Parse(this.TextBox1.Value.Trim()) > PageCount
158
|| Int32.Parse(this.TextBox1.Value.Trim()) == 0)
159
160![]()
{
161
return;
162
}
163
else
164![]()
{
165
CurrentPage = Int32.Parse(this.TextBox1.Value.ToString()) - 1;
166
break;
167
}
168
}
169
ViewState["PageIndex"] = CurrentPage;//获得当前页
170
this.DataListBind();
171
172
}
分页跳转时做了判断 不会报异常了
下面是设计页
![]()
Code
1
<asp:DataList ID="TextDataList" runat="server" Width="100%" DataKeyField="adid" EnableViewState="False"
2
CssClass="pic" Font-Overline="False">
3
<ItemTemplate>
4
<p class="piczt">
5
文字链内容:
6
<asp:Label ID="lal" runat="server" Text='<%# Eval("adtitle") %>'></asp:Label><br />
7
</p>
8
<div class="picco">
9
<p class="picco1">
10
<asp:TextBox ID="txtHtmlCode" TextMode="MultiLine" Rows="3" Columns="40" Text='<%# Eval("htmlcode") %>'
11
runat="server" ReadOnly="true" EnableViewState="false"></asp:TextBox>
12
</p>
13
<p class="picco2">
14
<asp:TextBox ID="txtForumCode" TextMode="MultiLine" Rows="3" Columns="40" Text='<%# Eval("forumcode") %>'
15
runat="server" ReadOnly="true" EnableViewState="false"></asp:TextBox>
16
</p>
17
</div>
18
<div class="picco">
19
<p class="picco1">
20
<input name="button1" type="button" class="an2" value="复制广告代码" onclick="setTxt('<%# Eval("htmlcode") %>')"/>
21
复制广告代码</button>
22
</p>
23
<p class="picco2">
24
<input name="button1" type="button" class="an2" value="复制论坛代码" onclick="setTxt('<%# Eval("forumcode") %>')"/>
25
复制论坛代码</button>
26
</p>
27
</div>
28
<p class="piczt">
29
产品名称:鞋 产品ID:123456789</p>
30
<p class="piczt">
31
提成比例:10%</p>
32
<p class="piczt">
33
<span class="zi2">注意:</span> 您的联盟 ID, abcdef , 已经包含在代码中</p>
34
</ItemTemplate>
35
<ItemStyle Width="100%" />
36
</asp:DataList>
37
<div class="page">
38
共<asp:Label ID="TotalLbl" runat="server"></asp:Label>页, 当前第<asp:Label ID="CurrentLbl"
39
runat="server"></asp:Label>页
40
<asp:LinkButton ID="FirstLB" runat="server" OnCommand="LinkButton_Click" CommandName="first"
41
Font-Overline="False">[ 首页 | </asp:LinkButton>
42
<asp:LinkButton ID="PreviousLB" runat="server" OnCommand="LinkButton_Click" CommandName="prev"
43
Font-Overline="False">上一页 | </asp:LinkButton>
44
<asp:LinkButton ID="NextLB" runat="server" OnCommand="LinkButton_Click" CommandName="next"
45
Font-Overline="False">下一页 | </asp:LinkButton>
46
<asp:LinkButton ID="EndLB" runat="server" OnCommand="LinkButton_Click" CommandName="end"
47
Font-Bold="False" Font-Overline="False">末页 ]</asp:LinkButton>
48
<asp:LinkButton ID="JumpLB" runat="server" OnCommand="LinkButton_Click" CommandName="jump"
49
Font-Overline="False">跳到</asp:LinkButton>
50
<input id="TextBox1" runat="server" type="text" name="TextBox1" style="width: 30px"
51
onkeyup="value=value.replace(/[^\d]/g,'')" />
52
</div>
53![]()
54
功能上除了分页 还有一个复制文本框的方法
<script type="text/javascript">
function setTxt(obj) {
window.clipboardData.setData('text', obj);
alert("复制成功!");
}
</script>
1

/**//// <summary>2
/// 当前页数3
/// </summary>4
int CurrentPage;5

/**//// <summary>6
/// 每页条数7
/// </summary>8
int PageSize;9

/**//// <summary>10
/// 总页数11
/// </summary>12
int PageCount;13

/**//// <summary>14
/// 总条数15
/// </summary>16
int RecordCount;17

18

/**//// <summary>19
/// 页面首次加载20
/// </summary>21
/// <param name="sender">发送对象</param>22
/// <param name="e">事件参数</param>23
protected void Page_Load(object sender, EventArgs e)24

{25
PageSize = 2;//每页数据记录26

27
if (!IsPostBack)28

{29
CurrentPage = 0;//当前页习惯设为030
ViewState["PageIndex"] = 0;//页索引也设为031

32
//计算总共有多少记录33
RecordCount = CalculateRecord();34

35
//计算总共有多少页36
if (RecordCount % PageSize == 0)37

{38
PageCount = RecordCount / PageSize;39
}40
else41

{42
PageCount = RecordCount / PageSize + 1;43
}44

45
this.TotalLbl.Text = PageCount.ToString();//显示总页数46
ViewState["PageCount"] = PageCount;47

48
this.DataListBind();49
}50
}51

52

53

/**//// <summary>54
/// 计算记录数55
/// </summary>56
/// <returns></returns>57
private int CalculateRecord()58

{59
try60

{61
int recordCount;62
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());63
con.Open();64

65
string sql = "select count(*) as count from cps_adinfo";66
SqlCommand cmd = new SqlCommand(sql, con);67
SqlDataReader sdr = cmd.ExecuteReader();68

69
if (sdr.Read())70

{71
recordCount = Int32.Parse(sdr["count"].ToString());72
}73
else74

{75
recordCount = 0;76
}77

78
sdr.Close();79
con.Close();80

81
return recordCount;82
}83

84
catch (Exception ex)85

{86
throw new Exception(ex.Message);87
}88
}89

90

91

/**//// <summary>92
/// 将数据绑定到Datalist控件93
/// </summary>94
public void DataListBind()95

{96
try97

{98
int StartIndex = CurrentPage * PageSize;//设定导入的起终地址99

100
string sql = "select * from cps_adinfo";101

102
DataSet ds = new DataSet();103
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"].ToString());104
con.Open();105

106
SqlDataAdapter sda = new SqlDataAdapter(sql, con);107
//Fill方法的第一次重载108
sda.Fill(ds, StartIndex, PageSize, "cps_adinfo");109

110
this.TextDataList.DataSource = ds.Tables["cps_adinfo"].DefaultView;111
this.TextDataList.DataBind();112
this.PreviousLB.Enabled = true;113
this.NextLB.Enabled = true;114
if (CurrentPage == (PageCount - 1)) this.NextLB.Enabled = false;//当为最后一页时,下一页链接按钮不可用115
if (CurrentPage == 0) this.PreviousLB.Enabled = false;//当为第一页时,上一页按钮不可用116
this.CurrentLbl.Text = (CurrentPage + 1).ToString();//当前页数117

118
}119

120
catch (Exception ex)121

{122
throw new Exception(ex.Message);123
}124
}125

126

/**//// <summary>127
/// 按钮点击事件128
/// </summary>129
/// <param name="sender"></param>130
/// <param name="e"></param>131
public void LinkButton_Click(Object sender, CommandEventArgs e)132

{133
CurrentPage = Int32.Parse(ViewState["PageIndex"].ToString());//获得当前页索引134
PageCount = Int32.Parse(ViewState["PageCount"].ToString());//获得总页数135

136
string cmd = e.CommandName; //判断cmd,以判定翻页方向137
switch (cmd)138

{139
case "prev"://上一页140
if (CurrentPage > 0) CurrentPage--;141
break;142

143
case "next":144
if (CurrentPage < (PageCount - 1)) CurrentPage++;//下一页145
break;146

147
case "first"://第一页148
CurrentPage = 0;149
break;150

151
case "end"://最后一页152
CurrentPage = PageCount - 1;153
break;154

155
case "jump"://跳转到第几页156
if (this.TextBox1.Value.Trim() == ""157
|| Int32.Parse(this.TextBox1.Value.Trim()) > PageCount158
|| Int32.Parse(this.TextBox1.Value.Trim()) == 0)159
160

{161
return;162
}163
else164

{165
CurrentPage = Int32.Parse(this.TextBox1.Value.ToString()) - 1;166
break;167
}168
}169
ViewState["PageIndex"] = CurrentPage;//获得当前页170
this.DataListBind();171
172
} 分页跳转时做了判断 不会报异常了
下面是设计页
1
<asp:DataList ID="TextDataList" runat="server" Width="100%" DataKeyField="adid" EnableViewState="False"2
CssClass="pic" Font-Overline="False">3
<ItemTemplate>4
<p class="piczt">5
文字链内容:6
<asp:Label ID="lal" runat="server" Text='<%# Eval("adtitle") %>'></asp:Label><br />7
</p>8
<div class="picco">9
<p class="picco1">10
<asp:TextBox ID="txtHtmlCode" TextMode="MultiLine" Rows="3" Columns="40" Text='<%# Eval("htmlcode") %>'11
runat="server" ReadOnly="true" EnableViewState="false"></asp:TextBox>12
</p>13
<p class="picco2">14
<asp:TextBox ID="txtForumCode" TextMode="MultiLine" Rows="3" Columns="40" Text='<%# Eval("forumcode") %>'15
runat="server" ReadOnly="true" EnableViewState="false"></asp:TextBox>16
</p>17
</div>18
<div class="picco">19
<p class="picco1">20
<input name="button1" type="button" class="an2" value="复制广告代码" onclick="setTxt('<%# Eval("htmlcode") %>')"/>21
复制广告代码</button>22
</p>23
<p class="picco2">24
<input name="button1" type="button" class="an2" value="复制论坛代码" onclick="setTxt('<%# Eval("forumcode") %>')"/>25
复制论坛代码</button>26
</p>27
</div>28
<p class="piczt">29
产品名称:鞋 产品ID:123456789</p>30
<p class="piczt">31
提成比例:10%</p>32
<p class="piczt">33
<span class="zi2">注意:</span> 您的联盟 ID, abcdef , 已经包含在代码中</p>34
</ItemTemplate>35
<ItemStyle Width="100%" />36
</asp:DataList>37
<div class="page">38
共<asp:Label ID="TotalLbl" runat="server"></asp:Label>页, 当前第<asp:Label ID="CurrentLbl"39
runat="server"></asp:Label>页40
<asp:LinkButton ID="FirstLB" runat="server" OnCommand="LinkButton_Click" CommandName="first"41
Font-Overline="False">[ 首页 | </asp:LinkButton>42
<asp:LinkButton ID="PreviousLB" runat="server" OnCommand="LinkButton_Click" CommandName="prev"43
Font-Overline="False">上一页 | </asp:LinkButton>44
<asp:LinkButton ID="NextLB" runat="server" OnCommand="LinkButton_Click" CommandName="next"45
Font-Overline="False">下一页 | </asp:LinkButton>46
<asp:LinkButton ID="EndLB" runat="server" OnCommand="LinkButton_Click" CommandName="end"47
Font-Bold="False" Font-Overline="False">末页 ]</asp:LinkButton>48
<asp:LinkButton ID="JumpLB" runat="server" OnCommand="LinkButton_Click" CommandName="jump"49
Font-Overline="False">跳到</asp:LinkButton>50
<input id="TextBox1" runat="server" type="text" name="TextBox1" style="width: 30px"51
onkeyup="value=value.replace(/[^\d]/g,'')" />52
</div>53

54

<script type="text/javascript">
function setTxt(obj) {
window.clipboardData.setData('text', obj);
alert("复制成功!");
}
</script>

浙公网安备 33010602011771号