`
njmnjx
  • 浏览: 232264 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

GridViw 绑定DataTable数据源 分页

阅读更多
使用DataTable后分页有两种形式:
一、使用自定义的分页控件。显示多少数据就从数据库取多少数据(使用分页sql语句)。并且样式好控制。
例句如下:
select top 页容量 * from 表名 where 条件 and id not in (select top (当前页-1)*页容量 from 表名 where 条件 order by 排序字段 排序方向) order by 排序字段 排序方向


二、使用GridVeiw自己的分页,这时如果有关键字过滤搜索的话,在写sql语句的时候不要使用上面一中提到的sql语句。必须要将符合条件的数据全部给GridView。否则分页链接不显示,因为数据绑定的只是当前页的内容。
例句:
select * from 表名 where 条件 order by 排序字段 排序方向


三、简例
aspx页面
  <asp:GridView ID="gvFieldData" runat="server" AutoGenerateColumns="False" DataKeyNames="obj_id" AllowSorting="True" OnSorting="gvTableData_Sorting" PageSize="30" OnPageIndexChanging="gvTableData_PageIndexChanging"AllowPaging="true">
	<Columns>                                                         
		<asp:TemplateField HeaderText="详细说明" SortExpression="fld_mem" HeaderStyle-CssClass="headerCss">
			<ItemTemplate>
				<%#StringOP.GetRationLenContent(Eval("fld_mem"), 10)%>
			</ItemTemplate>
		</asp:TemplateField>
        <asp:TemplateField HeaderText="查看" HeaderStyle-CssClass="headerCss">
			<ItemTemplate>
				<div runat="server" id="editDiv">
					<a href='javascript:edit(<%#Eval("fld_id")%>,<%#Eval("obj_id")%>)'>查看</a>
                </div>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

cs内容
public DataTable dt
{
	get { return ViewState["dt"] == null ? null : (DataTable)ViewState["dt"]; }
	set { ViewState["dt"] = value; }
}
if (!IsPostBack)
{
    ViewState["sortColumn"] = "fld_name";
    ViewState["sortDirection"] = "asc";
}

//列排序
protected void gvTableData_Sorting(object sender, GridViewSortEventArgs e)
{
	gvFieldData.EditIndex = -1;
	if (ViewState["sortColumn"].ToString() == e.SortExpression.ToString())
	{
		if ("ASC" == ViewState["sortDirection"].ToString())
		{
			ViewState["sortDirection"] = "DESC";
		}
		else
		{
			ViewState["sortDirection"] = "ASC";
		}
	}
	else
	{
		ViewState["sortColumn"] = e.SortExpression.ToString();
		ViewState["sortDirection"] = "ASC";
	}

	string orderString = "";
	orderString = ViewState["sortColumn"].ToString() + " " + ViewState["sortDirection"].ToString();
	GetFieldInfo(false, orderString);   //此为自定义数据绑定方法
}

//翻页
protected void gvTableData_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
	gvFieldData.PageIndex = e.NewPageIndex;
	string orderString = "";
	orderString = ViewState["sortColumn"].ToString() + " " + ViewState["sortDirection"].ToString();
	PaginationFunciton(e.NewPageIndex + 1, 30, orderString, txtSearchKey.Text);  //自定义按关键字取数据方法
}

 private void PaginationFunciton(int pageIndex,int pageNum,string orderStr,string keyStr)
{
	string sql = "select a.*,b.obj_id,b.obj_name,c.mc from zd_yw_field as a inner join zd_yw_object as b on a.obj_id=b.obj_id inner join zd_sys_bmk as c on a.fld_ywlb = c.bm where c.lb ='4' and (fld_name like '%" + keyStr + "%' or fld_mc like '%" + keyStr + "%' or fld_mem like '%" + keyStr + "%')";
	DataTable d = SqlHelper.ExecuteQuery(sql);
	gvFieldData.DataSource = d;
	gvFieldData.DataBind();
	GridViewOP.GetNullTip(d, gvFieldData);
}

protected void GetFieldInfo(bool isSearch, string orderString)
{
	if (string.IsNullOrEmpty(orderString))
		orderString = "fld_name";
	string sql = "select a.*,b.obj_id,b.obj_name,c.mc from zd_yw_field as a inner join zd_yw_object as b on a.obj_id=b.obj_id inner join zd_sys_bmk as c on a.fld_ywlb = c.bm where c.lb ='4' order by " + orderString;
	dt = SqlHelper.ExecuteQuery(sql);
	
	if (isSearch)
	{
		DataView dv = dt.DefaultView;
		dv.RowFilter = "fld_name like '%" + KeyConent + "%' or fld_mc like '%" + KeyConent + "%' or fld_mem like '%" + KeyConent + "%'";
		dt = dv.ToTable();
	}
	gvFieldData.DataSource = dt;
	gvFieldData.DataBind();

	GridViewOP.GetNullTip(dt, gvFieldData);   //当无数据时的提示
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.Data;

namespace Common
{
    /// <summary>
    /// 文件名:   GridViewOP.cs
    /// 描述:    列表控件操作类
    /// 版权:     北京****技术有限公司
    /// 作者:     ****
    /// 创建时间: 2010-2-25
    /// 修改者:  ******
    /// 修改时间:******
    /// 修改描述:******
    /// </summary>
    public class GridViewOP
    {
        /// <summary>
        /// GridView无数据时友好提示
        /// </summary>
        /// <param name="dt">DatTable实例</param>
        /// <param name="gv">操作GridView对象</param>
        public static void GetNullTip(DataTable dt, GridView gv)
        {
            if (dt.Rows.Count == 0)
            {
                dt.Rows.Add(dt.NewRow());
                gv.DataSource = dt;
                gv.DataBind();
                int columnCount = gv.Rows[0].Cells.Count;
                gv.Rows[0].Cells.Clear();
                gv.Rows[0].Cells.Add(new TableCell());
                gv.Rows[0].Cells[0].ColumnSpan = columnCount;
                gv.Rows[0].Cells[0].Text = "无内容";
                gv.RowStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
            }
        }

        /// <summary>
        /// DataList无数据时友好提示
        /// </summary>
        /// <param name="dt">DatTable实例</param>
        /// <param name="dl">操作DataList对象</param>
        public static void GetNullTip(DataTable dt ,DataList dl)
        {
            if (dt.Rows.Count == 0)
            {
                dt.Rows.Add(dt.NewRow());
                dl.DataSource = dt;
                dl.DataBind();
                Label l = new Label();
                l.Text = "对不起,没有您所查询的产品!";
                dl.Items[0].Controls.Clear();
                dl.Items[0].Controls.Add(l);
            }

        }
    }
}


以上只是一个小问题,但工作遇到了记录一下。
分享到:
评论

相关推荐

    WinForm下的数据绑定分页控件

    基于第一版的进一步优化 ... 对WinForm下的DataGridView控件进行扩展,实现其分页、新增、删除...3. 数据源为DataTable类型的自动分页的可排序数据绑定控件; 4. 数据源为DataTable类型的手动分页的可排序数据绑定控件。

    自定义控件 - WinForm下的数据绑定分页控件

    对WinForm下的DataGridView控件进行扩展,实现其分页功能,使用方便、简单,该控件适用于大部分的业务逻辑...3. 数据源为DataTable类型的自动分页的数据绑定控件; 4. 数据源为DataTable类型的手动分页的数据绑定控件。

    分页控件(自定义分页控件)

    该分页控件可以接受datatable和一条sql语句。该控件绑定datatable或sql语句后,就无需将gridview绑定数据源,也可以自定义页面pagesize。

    基于Asp.Net的自定义分页控件

    1、本控件为本人开发的基于Asp.net的分页控件,版权归...4、控件支持DataTable数据源和List泛型类数据源绑定。 5、每页显示的数量以及显示的页码数量和样式用户可以完全自定义。 6、页面使用方法参见:Help.txt文档。

    ASP.NET高级编程:校园BBS里的数据绑定.pptx

    使用数据源控件绑定数据 GridView数据控件的使用 GridView控件概述 分页和排序 自定义列 ;DataSet对象 DataSet对象即数据集对象,采用断开连接数据访问模式。 DataSet对象是数据的一种内存驻留表示形式,无论包含的...

    第7章 数据绑定控件

    实例193 绑定DataTable对象显示银行月利息 及本息 307 7.2 GridView控件基本应用 308 实例194 GridView数据绑定并实现自带 分页功能 308 实例195 实现选中、编辑和删除GridView中的 商品信息 310 实例196 供求信息...

    ASP.NET技巧:做个DataList可分页的数据源

    这个数据源,分两部分,一是从数据类中调出数据,然后在本数据源中对分页参数以及页面分页辅助控件进行操作!在前面有三个控件控制翻页,一个下拉列表,两个LinkButton! 下面 fill() 方法调用很简单,在页面中要...

    Asp.net 高级编程学习经验

    8.数据源控件的分页 9.在Gridview中对数据进行排序 10.关于如何处理Checkboxlist的方法 11.在Gridview中使用DropDownLIst的问题。 12.鼠标移动变色 13.关于在Gridview中的单元格中实现用“...”代替超长字符串 14....

    .net50个常用方法简单华丽的分页控件功能大的分页控件 50个实用方法

    2013年3月8号 修复了很多bug 调整了源代码 添加的时候 一定要引用 不要直接复制DLL 不然没有方法注释 最强大分分页控件 华丽的分页控件 实用的分页控件 有最新最实用的方法 联系小柒 下面是 AspNetHelp 类 ...

    ASP.NET 控件的使用

    14.2.2 使用DataPager控件进行数据源分页 459 14.3 小结 461 第四部分 创建组件 第15章 创建组件 464 15.1 创建基本组件 464 15.1.1 组件和动态编译 466 15.1.2 App_Code文件夹中不同语言的组件 466 15.1.3 声明...

    ASP.NET.4揭秘

    14.2.2 使用datapager控件进行数据源分页526 14.3 小结527 第15章 使用chart控件528 15.1 chart控件的基础知识528 15.1.1 使用chart控件显示数据528 15.1.2 排序和过滤数据532 15.1.3 统计公式534 15.2 定制图表的...

    ado[1].net中文手册 学习 ado.net的重要资料

    设置 DataTable 和 DataColumn 映射:描述如何使用表和列映射来提供从数据源中返回的列的应用程序特定名称。 将参数用于 DataAdapter:描述如何将参数用于 DataAdapter 的命令属性(包括如何将 DataSet 中列的内容...

    登陆界面和一些小技术

    //NEW一个分页数据源 ps.DataSource = ds("select * from book_info").DefaultView;//送一个SQL语句进去,确定该数据源的数据源 ps.AllowPaging = true;//允许分页 ps.PageSize = 1;//设置页的数量 ps....

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    6.4 SiteMapDataSource数据源控件 6.5 0bjectDataSource数据源控件 6.6 本章小结 第7章 SQL Server 2005常用操作 7.1 SQL Server 2005 7.1.1 SQL Server 2005概述 7.1.2 安装SQL Server 2005数据库 7.1.3 ...

    AspxGridView使用手记

    1.使用DataSource属性绑定DataTable 5 2.使用DataSourceID属性绑定SqlDataSource 6 3.使用DataSourceID属性绑定ObjectDataSource 6 4.使用DataSourceID属性绑定LinqDataSource 9 5.使用DataSourceID属性绑定...

    AspxGridView详细使用手记_全(Word文档)

    1.使用DataSource属性绑定DataTable 5 2.使用DataSourceID属性绑定SqlDataSource 6 3.使用DataSourceID属性绑定ObjectDataSource 6 4.使用DataSourceID属性绑定LinqDataSource 9 5.使用DataSourceID属性绑定...

    asp.net专家疑难解答200问源码

    141.如何将XML作为数据源绑定到控件 第8章 数据库设计 143.ASP.NET应用程序如何实现与SQL Server数据库的连接 144.ASP.NET应用程序如何实现与ACCESS数据库的连接 146.如何使用ADO.NET在数据库执行SQL语句 147....

    一个ViewGrid控件

    8、导出数据源的数据为Excel、Word或Text(应保证数据源的类型为DataTable或DataSet) 使用方法: 为WebGrid添加的方法 Export(string fileName) Export(string fileName, ExportFormat exportFormat) Export...

    ASP.NET3.5从入门到精通

    8.1.2 Access 数据源控件(AccessDataSource) 8.1.3 目标数据源控件(ObjectDataSource) 8.1.4 LINQ 数据源控件(LinqDataSource) 8.1.5 Xml 数据源控件(XmlDataSource) 8.1.6 站点导航控件(SiteMapDataSource...

Global site tag (gtag.js) - Google Analytics