您的位置:首页 > 其它

.net自定义分页实现以及没有任何数据时保留表头

2011-11-09 09:56 471 查看


前台:

<asp:GridView ID="gvData" runat="server" DataKeyNames="cnuiWorkID" PageSize="10" AutoGenerateColumns="False"
AllowPaging="true" IsSortedAscending="True" AllowSorting="True" CellPadding="0"
CellSpacing="0" CommandText="删除" LbtCommon="lbtDelete" HorizontalAlign="Center"
GridLines="None" Width="100%" OnRowCommand="gvData_RowCommand" Height="30px" Font-Size="10pt" CssClass="tablebox" EmptyDataText=" 没有查找到相关信息!">
<Columns>
<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<%#Container.DataItemIndex +1%>
</ItemTemplate>
<HeaderStyle Width="3%" HorizontalAlign="Center" Font-Bold="true"></HeaderStyle>
<ItemStyle Width="3%" HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>

<asp:TemplateField HeaderText="标题">
<ItemTemplate>
<asp:HyperLink ID="HyperLink0" runat="server" Target="_blank" NavigateUrl='<%#"WorkInfoForLeader.aspx?WorkID="+DataBinder.Eval(Container.DataItem, "cnuiWorkID").ToString()+"&&Type=move&&flag=NO" %>'> <%#DataBinder.Eval(Container.DataItem, "cnvcTitle").ToString()%>
<span style="color:Red;"><%#this.isNewMoveWork(DataBinder.Eval(Container.DataItem,"cnuiWorkID").ToString(),DataBinder.Eval(Container.DataItem,"cnvcOperateEname").ToString())%></span>
</asp:HyperLink>
</ItemTemplate>
<HeaderStyle Width="16%" HorizontalAlign="Center" Font-Bold="true"></HeaderStyle>
<ItemStyle Width="16%" HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>

<asp:TemplateField HeaderText="创建日期">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "cndCreateDate").ToString().Substring(0,10)%>
</ItemTemplate>
<HeaderStyle Width="6%" HorizontalAlign="Center" Font-Bold="true"></HeaderStyle>
<ItemStyle Width="6%" HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>

<asp:TemplateField HeaderText="过期日期">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "cndDeadDate").ToString()%>
</ItemTemplate>
<HeaderStyle Width="6%" HorizontalAlign="Center" Font-Bold="true"></HeaderStyle>
<ItemStyle Width="6%" HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>

<asp:TemplateField HeaderText="剩余天数">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "day").ToString()%>
</ItemTemplate>
<HeaderStyle Width="6%" HorizontalAlign="Center" Font-Bold="true"></HeaderStyle>
<ItemStyle Width="6%" HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>

<asp:TemplateField HeaderText="移交">
<ItemTemplate>
<a href="javascript:OpenNewLen('<%#"HandOver.aspx?WorkID="+ DataBinder.Eval(Container.DataItem, "cnuiWorkID").ToString() %>','500','250')">移交</a>
</ItemTemplate>
<HeaderStyle Width="3%" HorizontalAlign="Center" Font-Bold="true"></HeaderStyle>
<ItemStyle Width="3%" HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>

<asp:TemplateField HeaderText="分发">
<ItemTemplate>
<a href="javascript:OpenNewLen('<%#"HandOut.aspx?WorkID="+ DataBinder.Eval(Container.DataItem, "cnuiWorkID").ToString() %>','500','400')">分发</a>
</ItemTemplate>
<HeaderStyle Width="3%" HorizontalAlign="Center" Font-Bold="true"></HeaderStyle>
<ItemStyle Width="3%" HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>

<asp:TemplateField HeaderText="结束">
<ItemTemplate>
<a href="javascript:OpenNewLen('<%#"FinishWork.aspx?WorkID="+ DataBinder.Eval(Container.DataItem, "cnuiWorkID").ToString()+"&day="+ DataBinder.Eval(Container.DataItem, "day").ToString()%>','500','250')">结束</a>
</ItemTemplate>
<HeaderStyle Width="3%" HorizontalAlign="Center" Font-Bold="true"></HeaderStyle>
<ItemStyle Width="3%" HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>

<asp:TemplateField HeaderText="终止">
<ItemTemplate>
<a href="javascript:OpenNewLen('<%#"EndWork.aspx?WorkID="+ DataBinder.Eval(Container.DataItem, "cnuiWorkID").ToString() %>','500','250')">终止</a>

</ItemTemplate>
<HeaderStyle Width="3%" HorizontalAlign="Center" Font-Bold="true"></HeaderStyle>
<ItemStyle Width="3%" HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>

<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" OnClientClick="return confirm('确定删除?')" CommandName="deleteRow" CommandArgument='<%#DataBinder.Eval(Container.DataItem, "cnuiWorkID").ToString()%>'>删除</asp:LinkButton>
<asp:HyperLink ID="HyperLink4" runat="server" NavigateUrl='<%#"AlterWork.aspx?WorkID="+ DataBinder.Eval(Container.DataItem, "cnuiWorkID").ToString() %>'>修改</asp:HyperLink>
<asp:HyperLink ID="HyperLink5" runat="server" NavigateUrl='<%#"../Add/AddTask.aspx?WorkID="+ DataBinder.Eval(Container.DataItem, "cnuiWorkID").ToString() %>'>添加任务</asp:HyperLink>
</ItemTemplate>
<HeaderStyle Width="9%" HorizontalAlign="Center" Font-Bold="true"></HeaderStyle>
<ItemStyle Width="9%" HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
</Columns>
<PagerSettings Visible="False" />
</asp:GridView>
</td>
</tr>
<tr>
<td align="right" style="height: 25px">
<asp:Label ID="LblCurrentIndex" runat="server"></asp:Label>
<asp:Label ID="LblPageCount" runat="server"></asp:Label>
<asp:Label ID="LblRecordCount" runat="server"></asp:Label>
<asp:LinkButton ID="btnFirst" CommandArgument="first" OnClick="PagerButtonClick" runat="server">[首 页]</asp:LinkButton>
<asp:LinkButton ID="btnPrev" CommandArgument="prev" OnClick="PagerButtonClick" runat="server">[上一页]</asp:LinkButton>
<asp:LinkButton ID="btnNext" CommandArgument="next" OnClick="PagerButtonClick" runat="server">[下一页]</asp:LinkButton>
<asp:LinkButton ID="btnLast" CommandArgument="last" OnClick="PagerButtonClick" runat="server">[尾 页]</asp:LinkButton>
   跳转到:
<asp:DropDownList ID="pageDropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="pageDropDownList_SelectedIndexChanged"> </asp:DropDownList>
</td>
</tr>
</table>

后台:

#region 绑定数据
/// <summary>
/// 绑定数据
/// </summary>
public void MyDataBind()
{
WebPage werPage = new WebPage(gvData, btnFirst, btnPrev, btnNext, btnLast, LblCurrentIndex, LblPageCount, LblRecordCount, pageDropDownList);
werPage.BindPage(DataTableView());
}
#endregion

#region 得到DataTable数据表
/// <summary>
/// 得到DataTable数据表
/// </summary>
private DataTable DataTableView()
{
DataTable dt=new DataTable();
//得到登陆账户
string userEname = HNAS.IMP.WebComponents.PageBase.GetAccount();
WorkBF workBF = new WorkBF();
//查询工作单cnvcOperateEname为userEname的所有信息列表
ReturnValueSF rvSF = workBF.GetWorkByOperateEname(userEname);
if (rvSF.Result > 0)
{
//结果集赋值给DataTable
dt = rvSF.Dt;
//增加一个列,显示提醒时间
dt.Columns.Add("day");
//初始化开始时间
DateTime start = new DateTime();
//结束时间
DateTime end = new DateTime();
//当前时间的日期部分,忽略小时部分
DateTime now = DateTime.Now.Date;
for (int i = 0; i < dt.Rows.Count; i++)
{
//取出开始时间和结束时间
start = (DateTime)dt.Rows[i]["cndCreateDate"];
//得到开始时间的日期
start=start.Date;
//把日期转换为时间
end = Convert.ToDateTime(dt.Rows[i]["cndDeadDate"]+" 00:00:00");
//给列表赋值 当前剩余的天数
dt.Rows[i]["day"] = GetDays(start, end,now);
}
}
return dt;
}
#endregion

#region 实现分页
/// <summary>
/// 实现分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void PagerButtonClick(object sender, EventArgs e)
{
gvData.PageIndex = Convert.ToInt32(((LinkButton)sender).CommandName) - 1;
MyDataBind();

}

#endregion

#region 分页跳转
/// <summary>
/// 分页跳转
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void pageDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
gvData.PageIndex = Convert.ToInt32(pageDropDownList.SelectedValue) - 1;
MyDataBind();
}
#endregion

#region 删除操作
/// <summary>
/// 操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gvData_RowCommand(object sender, GridViewCommandEventArgs e)
{
string commandName = e.CommandName.ToString();
string WorkID = e.CommandArgument.ToString();

//删除 --其实是修改
if (commandName == "deleteRow")
{
ReturnValueSF rvSF = new ReturnValueSF();
//根据工作单ID删除该工作单 假删除
rvSF = new WorkBF().DeleteWorkByID(new Guid(WorkID));
//删除工作单的同时删除该工作单的监督领导
if (rvSF.Result > 0)
{
HNAS.Public.WebCommon.AlertMsn.PopMsn(rvSF.Result, rvSF.Message);
}
//再次绑定数据
MyDataBind();
}
}
#endregion

分页实现:

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;

namespace HNAS.IMPTaskWebUI.WebCommon
{
/// <summary>
/// 分页,实现gridview的分页
/// </summary>
public class WebPage
{
#region 全局属性定义
/// <summary>
/// 全局属性定义
/// </summary>
private GridView gvData; //数据视图
private LinkButton btnFirst ; //首页
private LinkButton btnPrev ; //上一页
private LinkButton btnNext ; //下一页
private LinkButton btnLast; //尾页
private Label LblCurrentIndex; //当前页
private Label LblPageCount; //总得页数
private Label LblRecordCount; //总共记录数
private DropDownList pageDropDownList; //下拉列表
#endregion

#region 无参构造器
/// <summary>
/// 无参构造器
/// </summary>
public WebPage() { }
#endregion

#region 构造器初始化
/// <summary>
/// 构造器初始化
/// </summary>
/// <param name="gvData">girdview</param>
/// <param name="btnFirst">首页</param>
/// <param name="btnPrev">上一页</param>
/// <param name="btnNext">下一页</param>
/// <param name="btnLast">尾页</param>
/// <param name="LblCurrentIndex">当前页</param>
/// <param name="LblPageCount">总页数</param>
/// <param name="LblRecordCount">总记录数</param>
/// <param name="pageDropDownList">下拉列表</param>
/// 创 建 人:申明英
/// 创建日期:2011-9-16
/// 修 改 人:
/// 修改日期:
public WebPage(GridView gvData, LinkButton btnFirst, LinkButton btnPrev, LinkButton btnNext, LinkButton btnLast, Label LblCurrentIndex, Label LblPageCount, Label LblRecordCount, DropDownList pageDropDownList)
{
this.gvData = gvData;
this.btnFirst = btnFirst;
this.btnPrev = btnPrev;
this.btnNext = btnNext;
this.btnLast = btnLast;
this.LblCurrentIndex = LblCurrentIndex;
this.LblPageCount = LblPageCount;
this.LblRecordCount = LblRecordCount;
this.pageDropDownList = pageDropDownList;

}
#endregion

#region 分页实现
/// <summary>
/// 分页实现
/// </summary>
/// <param name="DT">表数据</param>
public void BindPage(DataTable DT)
{
try
{
//绑定数据源
gvData.DataSource = DT;
gvData.DataBind();

//设置分页按钮是否可用
btnFirst.Enabled = true;
btnPrev.Enabled = true;
btnNext.Enabled = true;
btnLast.Enabled = true;

//初始化数据
LblCurrentIndex.Text = "第 " + (gvData.PageIndex + 1).ToString() + " 页";
LblPageCount.Text = "共 " + gvData.PageCount.ToString() + " 页";
LblRecordCount.Text = "总共 " + DT.Rows.Count.ToString() + " 条";
if (gvData.PageIndex == 0)
{
btnFirst.Enabled = false;
btnPrev.Enabled = false;
}
else if (gvData.PageIndex == gvData.PageCount - 1)
{
btnNext.Enabled = false;
btnLast.Enabled = false;
}

//当只有一页的时候 所有控件不可用
if (gvData.PageCount == 1)
{
btnFirst.Enabled = false;
btnPrev.Enabled = false;
btnNext.Enabled = false;
btnLast.Enabled = false;
}

//清空页面序号
pageDropDownList.Items.Clear();

//加载页面序号
for (int i = 1; i < gvData.PageCount + 1; i++)
{
pageDropDownList.Items.Add(i.ToString());
}
//得到选择的值
pageDropDownList.SelectedValue = Convert.ToString(gvData.PageIndex + 1);
// 计算生成分页页码首 页
btnFirst.CommandName = "1";
//上一页
btnPrev.CommandName = (gvData.PageIndex == 0 ? "1" : gvData.PageIndex.ToString());
//下一页
btnNext.CommandName = (gvData.PageCount == 1 ? gvData.PageCount.ToString() : (gvData.PageIndex + 2).ToString());
//尾页
btnLast.CommandName = gvData.PageCount.ToString();

//如果没有数据 让所有控件不可用,并设置表头信息
if (DT.Rows.Count == 0)
{
btnFirst.Enabled = false;
btnPrev.Enabled = false;
btnNext.Enabled = false;
btnLast.Enabled = false;

//没有数据的时候显示表头
//表头的设置
GridViewRow row = new GridViewRow(-1, -1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal);
foreach (DataControlField field in this.gvData.Columns)
{
//设置表头的样式
TableHeaderCell cell = new TableHeaderCell();
// TableCell cell = new TableCell();
//获取表头的标题
cell.Text = field.HeaderText;
cell.Width = field.HeaderStyle.Width;
cell.Height = field.HeaderStyle.Height;
cell.ForeColor = field.HeaderStyle.ForeColor;
cell.Font.Size = field.HeaderStyle.Font.Size;
cell.Font.Bold = field.HeaderStyle.Font.Bold;
cell.Font.Name = field.HeaderStyle.Font.Name;
cell.Font.Strikeout = field.HeaderStyle.Font.Strikeout;
cell.Font.Underline = field.HeaderStyle.Font.Underline;
cell.BackColor = field.HeaderStyle.BackColor;
cell.VerticalAlign = field.HeaderStyle.VerticalAlign;
cell.HorizontalAlign = field.HeaderStyle.HorizontalAlign;
cell.CssClass = field.HeaderStyle.CssClass;
cell.BorderColor = field.HeaderStyle.BorderColor;
cell.BorderStyle = field.HeaderStyle.BorderStyle;
cell.BorderWidth = field.HeaderStyle.BorderWidth;
row.Cells.Add(cell);
}
//设置表头的样式
//得到原来表头的样式
TableItemStyle headStyle = this.gvData.HeaderStyle;
//设置表头样式
TableItemStyle emptyStyle = this.gvData.EmptyDataRowStyle;
emptyStyle.Width = headStyle.Width;
emptyStyle.Height = headStyle.Height;
emptyStyle.ForeColor = headStyle.ForeColor;
emptyStyle.Font.Size = headStyle.Font.Size;
emptyStyle.Font.Bold = headStyle.Font.Bold;
emptyStyle.Font.Name = headStyle.Font.Name;
emptyStyle.Font.Strikeout = headStyle.Font.Strikeout;
emptyStyle.Font.Underline = headStyle.Font.Underline;
emptyStyle.BackColor = headStyle.BackColor;
emptyStyle.VerticalAlign = headStyle.VerticalAlign;
emptyStyle.HorizontalAlign = headStyle.HorizontalAlign;
emptyStyle.CssClass = headStyle.CssClass;
emptyStyle.BorderColor = headStyle.BorderColor;
emptyStyle.BorderStyle = headStyle.BorderStyle;
emptyStyle.BorderWidth = headStyle.BorderWidth;
//空白行的设置
GridViewRow row1 = new GridViewRow(0, -1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal);

TableCell cell1 = new TableCell();

//设置没有数据时显示的内容
cell1.Text = "没有任何数据可以显示";
cell1.BackColor = System.Drawing.Color.White;
//添加单元格
row1.Cells.Add(cell1);
cell1.ColumnSpan =this.gvData.Columns.Count; //得到gridview的列数

if (this.gvData.Controls.Count == 0) //不存在girdView
{
//this.gvData.Page.Response.Write("<script language='javascript'>alert('必须在初始化表格类之前执行DataBind方法并设置EmptyDataText属性不为空!');</script>");
}
else
{
this.gvData.Controls[0].Controls.Clear();
this.gvData.Controls[0].Controls.AddAt(0, row);
this.gvData.Controls[0].Controls.AddAt(1, row1);

}
}

}
catch (Exception ex)
{
HttpContext.Current.Response.Write("数据库错误,错误原因:" + ex.Message);
HttpContext.Current.Response.End();
}

}

#endregion
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐