不要尝试在page_load里取控件值,没有意义,首先你要在DAL层弄个method,然后你直接拿这个参数用去数据库查所要的值,然后以string方式返回这些值,然后在page_load call那个method就行了,得到值一切搞定,在datalist里拿?net生成的顺序是先Page_load再读页面内的控制,也就是说你的Page_load先于datalist。不信你自己debug下
datagridview不能直接设置每页行数,必须通过写代码去实现分页功能。
范例如下:
Code highlighting produced by Actipro CodeHighlighter (freeware)>很好
using System;
using SystemData;
using SystemConfiguration;
using SystemWeb;
using SystemWebSecurity;
using SystemWebUI;
using SystemWebUIWebControls;
using SystemWebUIWebControlsWebParts;
using SystemWebUIHtmlControls;
public partial class _Default : SystemWebUIPage
{
DBHelper db = new DBHelper();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
pagesize();
//DBHelper db = new DBHelper();
//GridView1DataSource = dbGetAllBook();
//GridView1DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
DBHelper db = new DBHelper();
GridView1DataSource = dbGetBook(intParse(TextBox1Text));
GridView1DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
DBHelper db = new DBHelper();
GridView1PageIndex = eNewPageIndex;//把新获得索引设置为当前页的索引
GridView1DataSource = dbGetAllBook();
GridView1DataBind();
}
public void pagesize()
{
PagedDataSource page = new PagedDataSource();//封装数据,绑定控件
pageDataSource = dbGetAllBook()Tables[0]DefaultView;//指定数据源,而datasource这个控件不能直接来绑定数据而只能绑定视图
pageAllowPaging = true;//是否启动分页
pagePageSize = 5;//行数
pageCurrentPageIndex = intParse(thislbl_pagecurentText)-1;//设定或获取当前页的索引
lbl_countText =pagePageCountToString();//获取显示数据源中的所有项所需要的总页数
int pagecurent = intParse(thislbl_pagecurentText);//定义一个变量来获取当前第几页(lbl_pagecurent)
GridView1DataSource = page;//前后两句都是用来绑定数据源的
GridView1DataBind();
//lbl_pagecurent当前第几页 lbl_count总共第几页
//LinkButton1首页 btn_prev上一页 btn_next下一页
//LinkButton4末页 TextBox2 跳转到第几页
if (pagecurent==1)
{
btn_prevEnabled = false;
}
else
{
btn_prevEnabled = true;
}
if (pagecurent==pagePageCount)
{
btn_nextEnabled = false;
}
else
{
btn_nextEnabled = true;
}
}
protected void btn_prev_Click(object sender, EventArgs e)
{
int i = intParse(thislbl_pagecurentText) - 1;
thislbl_pagecurentText = iToString();
pagesize();
}
protected void btn_next_Click(object sender, EventArgs e)
{
int i = intParse(thislbl_pagecurentText) + 1;
thislbl_pagecurentText = iToString();
pagesize();
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
lbl_pagecurentText = "1";
pagesize();
}
protected void LinkButton4_Click(object sender, EventArgs e)
{
lbl_pagecurentText = thislbl_countText;
pagesize();
}
protected void Button3_Click(object sender, EventArgs e)
{
thislbl_pagecurentText = thisTextBox2Text;
pagesize();
这是分页的整个源代码,有的括号掉了,你自己去看一下吧
告诉你步骤吧:
第一:在数据库中统计conut数,然后就能知道有多少条记录,然后除以每页最大显示条数,就能得到有多少页了。
第二:使用Sql语句进行分页 *** 作,比如有表Users,主键是UID,因此SQL语句如下:
select top () from Users where UID not in (select top () UID from Users)
两个top后面的()是数字,第一个是当前要显示多少条记录,然后第二个是当前第几页,是通过计算得到,为最大显示条数 当前页数即可~
最后得到的数据显示在页面上即可~
script language="jscript" type="text/javascript">
var pageIndex = 1; //当前页数
$(function(){
GetPageCount();//获取分页数量以及总的记录条数
$("#load")hide();//隐藏loading提示
$("#template")hide();//隐藏模板
ChangeState(0,1);//设置翻页按钮的初始状态
bind();//绑定第一页的数据
//第一页按钮click事件
$("#first")click(function(){
pageIndex = 1;
ChangeState(0,1);
bind();
});
//上一页按钮click事件
$("#previous")click(function(){
pageIndex -= 1;
ChangeState(-1,1);
if(pageIndex <= 1){
pageIndex = 1;
ChangeState(0,-1);
}
bind();
});
//下一页按钮click事件
$("#next")click(function(){
pageIndex += 1;
ChangeState(1,-1);
if(pageIndex>=pageCount)
{
pageIndex = pageCount;
ChangeState(-1,0);
}
bind(pageIndex);
});
//最后一页按钮click事件
$("#last")click(function(){
pageIndex = pageCount;
ChangeState(1,0);
bind(pageIndex);
});
//每页显示记录条数select事件
$("#pageSize")change(function(){
bind();
})
});
//AJAX方法取得数据并显示到页面上
function bind(){
$("#load")show();
var pageSize = $("#pageSize")val();
$ajax({
type: "get",//使用get方法访问后台
dataType: "json",//返回json格式的数据
url: "<%=basePath%>actionSmUserdomethod=listUser2",//要访问的后台地址
data: "pageIndex=" + pageIndex+"&pageSize="+pageSize,//要发送的数据
complete : function(msg){//msg为返回的数据,在这里做数据绑定
$("[id=ready]")remove();
var data = eval("("+msgresponseText+")");
$each(data, function(i, n){
var row = $("#template")clone();
rowfind("#userId")text(nuserId);
rowfind("#userName")text(nuserName);
rowfind("#depId")text(ndepId);
rowfind("#createTime")text(ncreateTime);
if(ncreateTime !== undefined) rowfind("#createTime")text(ncreateTime);
rowfind("#creator")text(ncreator);
rowfind("#menusId")text(nmenusId);
rowfind("#isValid")text(nisValid);
rowattr("id","ready");//改变绑定好数据的行的id
rowappendTo("#datas");//添加到模板的容器中
});
$("[id=ready]")show();
SetPageInfo();
}
});
}
function ChangeDate(date){
return datereplace("-","/")replace("-","/");
}
//设置第几页/共几页的信息
function SetPageInfo(){
var pageCount = $("#pageCount")val();
var totalCount = $("#totalCount")val();
var pageSize = $("#pageSize")val();
$("#pageinfo")html(" 第<input class='default_pgCurrentPage' id='pageIndex' type='text' value='"+pageIndex+
"' style='width: 30px' /> 页" + "/" +"共 "+pageCount+"页"+
" 检索到 "+totalCount+"条记录,显示第 "+(pageIndexpageSize-pageSize)+" 条 - 第 "+(pageIndexpageSize)+" 条记录");
}
//AJAX方法取得分页总数
function GetPageCount(){
var pageSize = $("#pageSize")val();
$ajax({
type: "get",
dataType: "text",
url: "<%=basePath%>actionSmUserdomethod=getPageCount",
data: "pageSize="+pageSize ,
async: false,
success: function(msg){
var data = eval("("+msg+")");
$("#pageCount")val(data[0]pageCount);
$("#totalCount")val(data[0]totalCount);
}
});
}
//改变翻页按钮状态
function ChangeState(state1,state2){
$("#first")attr("class","default_pgFirst default_pgBtn");
$("#previous")attr("class","default_pgPrev default_pgBtn");
$("#next")attr("class","default_pgNext default_pgBtn");
$("#last")attr("class","default_pgLast default_pgBtn");
if(state1 == 1) {
documentgetElementById("first")disabled = "";
documentgetElementById("previous")disabled = "";
}else if(state1 == 0){
documentgetElementById("first")disabled = "disabled";
documentgetElementById("previous")disabled = "disabled";
$("#first")attr("class","default_pgFirstDisabled default_pgBtn");
$("#previous")attr("class","default_pgPrevDisabled default_pgBtn");
}if(state2 == 1){
documentgetElementById("next")disabled = "";
documentgetElementById("last")disabled = "";
}else if(state2 == 0){
documentgetElementById("next")disabled = "disabled";
documentgetElementById("last")disabled = "disabled";
$("#next")attr("class","default_pgNextDisabled default_pgBtn");
$("#last")attr("class","default_pgLastDisabled default_pgBtn");
}
}
</script>
html页面代码如下:
复制代码代码如下:
<body>
<div>
<div>
<br />
<table id="datas" align="center" class="listtable" width="100%" bgcolor="#CCCCCC" cellSpacing="1" cellpadding="1" style="margin-top:5px;">
<tr class="fixheader">
<th width="14%">
用户ID</th>
<th width="14%">
用户名称</th>
<th width="14%">
所在科室</th>
<th width="14%">
创建时间</th>
<th width="14%">
创建人</th>
<th width="14%">
菜单集名称</th>
<th width="14%">
是否有效</th>
</tr>
<tr id="template" height="22px" bgcolor="#F9FDFF" onmouseover="javascript:thisstylebackgroundColor='#FFFFCC'; return true;" onMouseOut="javascript:thisstylebackgroundColor='#F9FDFF'; return true;">
<td id="userId" class="tdc">
</td>
<td id="userName" class="tdc">
</td>
<td id="depId" class="tdc">
</td>
<td id="createTime" class="tdc">
</td>
<td id="creator" class="tdc">
</td>
<td id="menusId" class="tdc">
</td>
<td id="isValid" class="tdc">
</td>
</tr>
</table>
</div>
<div id="load" style="left: 0px; position: absolute; top: 0px; background-color: red">
LOADING
</div>
<div class="default_pgContainer" >
<div class="default_container">
<div class="default_pgPanel" id="skinDiv">
<table class="default_pgToolbar">
<tr>
<td class="black_pgCurrentPage">
<select id="pageSize" name="pageSize">
<option selected="selected" value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
</select>
</td>
<td>
<div id="first" class="default_pgFirst default_pgBtn" />
</td>
<td>
<div id="previous" class="default_pgPrev default_pgBtn" />
</td>
<td class="default_separator">
</td>
<td>
<div id="next" class="default_pgNext default_pgBtn" />
</td>
<td>
<div id="last" class="default_pgLast default_pgBtn" />
</td>
<td class="default_separator">
</td>
<td>
<span id="pageinfo"></span>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div id="test"></div>
<input type="hidden" id="pageCount" style="width: 45px" />
<input type="hidden" id="totalCount" style="width: 45px" />
</body>
后台action中代码如下:
复制代码代码如下:
//分页获取用户信息
public void listUser2(ActionMapping mapping, ActionForm form,
>
GridView分页中,一般有两种数据读取方式:
第一种是一次性把所要的数据全部读到客户端,再进行处理,如比放到datatable中,总页数就是datatable["表名"]rowscount/每页的数据条数但这种方式不适合大数据量查询,特别是在多人一起查询时
第二种方式也是本人常用的方法,使用SQL中的row_number()函数,就是读取我当前页的数据比如:
select
from
(select
row_number()
over(order
by
siteid
desc)
as
rowNumber,
from
表名
)
as
table1
where
rowNumber
between
(本页起始条数,如:20)
and
(本页结束条数,如40)
order
by
inid
desc
得到的数据直接输出到GridView则可以了!
这个问题很有意思。我用powerquery也实现了(代码一如既往地不优雅)。
@fan4di大神的公式应该是最优解法。
powerquery代码如下:
let
源 = ExcelCurrentWorkbook(){[Name="表1"]}[Content],
更改的类型 = TableTransformColumnTypes(源,{{"章节", type text}, {"页数", Int64Type}, {"页码", Int64Type}}),
筛选的行 = TableSelectRows(更改的类型, each ([页数] <> null)),
已添加索引 = TableAddIndexColumn(筛选的行, "索引", 0, 1),
已添加自定义 = TableAddColumn(已添加索引, "自定义", each if [页数]= null then null else {1[页数]}),
页数 = {77+ ListSum(已添加自定义[页数])-1},
#"展开的“自定义”" = TableExpandListColumn(已添加自定义, "自定义"),
已添加索引1 = TableAddIndexColumn(#"展开的“自定义”", "索引1", 0, 1),
已添加自定义1 = TableAddColumn(已添加索引1, "new", each 页数{[索引1]}),
删除的列 = TableRemoveColumns(已添加自定义1,{"页码", "索引", "自定义", "索引1"}),
分组的行 = TableGroup(删除的列, {"章节", "页数"}, {{"data", each _, type table [章节=text, 页数=number, new=number]}}),
自定义1 = TableTransformColumns(分组的行,{"data",each if TableRowCount(_)=1 then _[new]{0} else TextFrom(ListFirst(_[new]))&"-"&TextFrom(ListLast(_[new]))}),
重命名的列 = TableRenameColumns(自定义1,{{"章节", "章节1"}}),
删除的列1 = TableRemoveColumns(重命名的列,{"页数"}),
自定义2 = TableJoin(更改的类型,"章节",删除的列1,"章节1",JoinKindLeftOuter),
删除的列2 = TableRemoveColumns(自定义2,{"页码", "章节1"}),
重命名的列1 = TableRenameColumns(删除的列2,{{"data", "页码"}}),
更改的类型1 = TableTransformColumnTypes(重命名的列1,{{"页码", type text}})
in
更改的类型1
提供一个示例文件供参考研究:
> 提取码: 7tem
用法:用excel2016及以上版本打开,替换原始数据区域,然后点击数据选项卡,点击”全部刷新“,新结果就出来了。如果是低版本,需要自行百度安装启用powerquery插件。
以上就是关于如何在Page_Load()里获取DataList里的控件值全部的内容,包括:如何在Page_Load()里获取DataList里的控件值、怎么设置datagridview每页显示多少行、asp.net中datalist分页的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)