• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

田九

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

使用Repeater+aspnet进行数据展示、分页及Linq、lambda的使用

个人开发的一些记录

在dotNet[c#]中使用GridView进行数据展示会产生很多的__VIEWSTATE,相当讨厌

在高手调整的指导下,使用Repeater减少其__VIEWSTATE,以及Linq、llambda的使用,以下是相关代码

asp.net 分页不错的样式,记录了:

View Code
/*----------page--------------*/
.paginator
{
padding
: 10px 20px 10px 0;
margin
: 0px;
text-align
: center;
height
: 35px;
clear
: both;
}
.paginator a
{
padding
: 1px 6px;
border
: solid 1px #ddd;
background
: #fff;
text-decoration
: none;
margin-right
: 2px;
}
.paginator a:visited
{
padding
: 1px 6px;
border
: solid 1px #ddd;
background
: #fff;
text-decoration
: none;
}
.paginator .cpb
{
padding
: 1px 6px;
font-weight
: bold;
font-size
: 13px;
border
: none;
}
.paginator a:hover
{
color
: #fff;
background
: #ffa501;
border-color
: #ffa501;
text-decoration
: none;
}

在aspx表头加入如下:

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>

body结构如下:

View Code
 <table class="GridBody">
<tr class="Head">
<td style="width:5%;">
序号
</td>
<td>
年度
</td>
<td>
录入时间
</td>
<td style="width:10%;">
操作
</td>
</tr>
<asp:Repeater ID="rptData" runat="server"
onitemdatabound
="rptData_ItemDataBound">
<ItemTemplate>
<tr>
<td>
<%# Eval("rn")%>
</td>
<td>
<%# Eval("nd")%>
</td>
<td>
<asp:HiddenField ID="hidKCDM" Value='<%# Eval("kcdm")%>' runat="server" />
<%# Eval("kcmc")%>
</td>
<td>
<%# Eval("enter_date","{0:yyyy-MM-dd}")%>
</td>
<td>
<asp:HiddenField ID="hidBSM" Value='<%# Eval("bsm")%>' runat="server" />
<asp:HyperLink ID="linkEdit" runat="server">[编辑]</asp:HyperLink>&nbsp;<asp:LinkButton ID="btnDelete" OnClick="Delete" CommandArgument='<%# Eval("bsm")%>' runat="server">[删除]</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
<webdiyer:AspNetPager ID="AspNetPager1" CssClass="paginator" CurrentPageButtonClass="cpb"
FirstPageText
="首页" LastPageText="末页" ShowFirstLast="true" OnPageChanged="AspNetPager1_PageChanged"
runat
="server">
</webdiyer:AspNetPager>

后台代码如下:

View Code
 const string SELECT_SQL = "select " +
"rownum rn,bsm,nd,kcdm,kcmc,kczl,kczldw,remark,enter_date" +
" from kg_kcgmzlzb where 1=1 ";
IDbHelp dbHelp
= DBUtil.GetDbHelp();
protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{
BindData();
}
doInitDDL();
}
/// <summary>
/// 初始化年
/// </summary>
private void doInitDDL()
{
string strSQL = "select distinct nd from ( "+
"select k.nd from kg_kcgmzlzb k union select to_char(sysdate,'yyyy') from dual)";
DataTable dt
= dbHelp.GetDataTable(strSQL);
this.ddlND.DataTextField = "nd";
this.ddlND.DataValueField = "nd";
this.ddlND.DataSource = dt;
this.ddlND.DataBind();
}

/// <summary>
/// 绑定数据
/// </summary>
private void BindData()
{
DataTable dt
= GetData();

int pagesize = 20;
var qq
= (from t in dt.AsEnumerable()
select
new {
rn
= t.Field<object>("rn"),
bsm
= t.Field<object>("bsm"),
nd
= t.Field<object>("nd"),
kcdm
= t.Field<object>("kcdm"),
kcmc
= t.Field<object>("kcmc"),
kczl
= t.Field<object>("kczl"),
kczldw
= t.Field<object>("kczldw"),
enter_date
= t.Field<DateTime>("enter_date"),
}).Skip(pagesize
* (AspNetPager1.CurrentPageIndex-1)).Take(pagesize);

this.rptData.DataSource = qq;
AspNetPager1.PageSize
= pagesize;
AspNetPager1.RecordCount
= dt.Rows.Count;
this.rptData.DataBind();
}

private DataTable GetData()
{
StringBuilder strBuilder
= new StringBuilder();
strBuilder.Append(SELECT_SQL);
if (!string.IsNullOrEmpty(KCZKZ.Value))
{
strBuilder.Append(
" and kcdm='" + KCZKZ.Value + "'");
}
DataTable dt
= dbHelp.GetDataTable(strBuilder.ToString());
return dt;
}


protected void btnQuery_Click(object sender, EventArgs e)
{
BindData();
}

protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
BindData();
}

/// <summary>
/// 绑定事件处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void rptData_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
HyperLink link_edit
= ((HyperLink)e.Item.FindControl("linkEdit"));
HiddenField hid_bsm
= ((HiddenField)e.Item.FindControl("hidBSM"));
link_edit.NavigateUrl
= "javascript:doEdit('edit','" + hid_bsm.Value + "');";
}

protected void Delete(object sender, EventArgs e)
{
LinkButton btnDelete
= (LinkButton)sender;
string _BSM = btnDelete.CommandArgument;
string sql = "delete from KG_KCGMZLZB where bsm='" + _BSM + "'";
int iRet = dbHelp.ExecuteNonQuery(sql);
BindData();
}

posted on 2011-07-25 18:27  考拉田九  阅读(653)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3