如何在Page_Load()里获取DataList里的控件值

如何在Page_Load()里获取DataList里的控件值,第1张

不要尝试在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分页的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9321219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存