`
njmnjx
  • 浏览: 234405 次
  • 性别: 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);
            }

        }
    }
}


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

相关推荐

    WPF DataGrid绑定DataTable demo

    它可以自动根据数据源生成列,并提供排序、分页、选择等功能。在XAML中,你可以通过`&lt;DataGrid&gt;`标签来声明和配置DataGrid。 接下来,我们讨论如何创建和填充一个DataTable。DataTable属于System.Data命名空间,它...

    WinForm下的数据绑定分页控件

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

    数据源控件和数据源绑定

    它可以连接到各种数据源,并通过设置BindingSource.DataSource属性为数据源(如DataTable或List对象),并将BindingSource.DataMember属性设置为表名或列表字段,就可以将数据绑定到特定的UI控件。 在实际应用中,...

    Winform数据源绑定的分页简单代码,自己整理

    下面将详细介绍Winform数据源绑定的分页实现及其相关知识点。 1. 数据源绑定基础 数据源绑定是将数据源(如数据库、数组或列表)与Winform控件关联的过程。这使得控件能动态显示和操作数据。常见的数据源有...

    c#数据库数据源绑定

    在C#编程中,数据源绑定是一项核心技能,特别是在开发数据驱动的应用程序时。这个主题主要涉及如何将数据库中的数据与应用程序的用户界面元素(如控件)进行连接,以便实时展示、操作和更新数据。这里我们将深入探讨...

    DataGrid绑定数据分页出错

    如果数据源发生变化或者没有正确绑定到DataGrid上,也可能导致分页功能失效。 - 在`DataGrid1_DataBindComplete`事件中可以检查当前页面的索引是否与实际一致。 5. **其他因素**: - 检查是否有其他控件或脚本...

    DevExpress中GridControl的属性设置及动态绑定数据和全选取消全选

    你可以将各种数据源(如数据库表、列表、数组)绑定到此属性,使得GridControl能展示和操作这些数据。 3. **DataMember**:在绑定到数据集或数据表时,此属性用于指定要显示的表名或数据关系名。 4. **Columns**:...

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

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

    WPF MVVM DataGrid分页案例

    1. **数据源**:通常,我们会创建一个可观察集合(ObservableCollection),用作DataGrid的数据源。在MVVM模式下,这个集合应位于ViewModel中,并通过数据绑定连接到View。 2. **分页逻辑**:ViewModel需要包含分页...

    DevExpress简单的数据绑定

    数据绑定是.NET框架中的核心概念,允许UI元素与数据源动态关联。在DevExpress GridControl中,数据绑定使你可以将数据集、实体框架模型或其他数据结构映射到控件的行和列,实现数据的实时更新。 2. **数据源选择**...

    C# datagridview 绑定数据后绑定标题

    当我们谈论“C# datagridview 绑定数据后绑定标题”,这意味着我们需要将数据源与`DataGridView`关联,并自定义列头显示。 首先,让我们了解如何绑定数据到`DataGridView`。数据可以来自各种来源,例如数据库、数组...

    DataGrid数据绑定及分页

    数据绑定是将数据源(如数据库、数组或集合)与UI元素(如DataGrid)关联的过程。在ASP.NET中,DataGrid的数据绑定主要通过两种方式:声明式和编程式。 - **声明式绑定**:在ASP.NET页面的HTML标记中直接定义数据源...

    vs2005 如何使用数据绑定浏览数据库记录

    将DataGridView拖放到Form上,然后在“数据”选项卡中,通过“数据源”下拉框选择之前配置的数据源,系统会自动将选定的表或视图绑定到该控件。 三、数据绑定过程 1. **设置数据源**:在“数据”窗口中,展开数据...

    C#DataGridView分页显示功能实现

    `DataGridView`可以通过编程方式动态添加行,或者绑定到数据源(如DataTable、BindingSource或自定义数据集)自动显示数据。在分页功能中,我们通常会选择绑定到数据源,这样可以更方便地控制数据的加载和显示。 1....

    JSF-2-DataTable

    它可以与JavaBean或任何其他数据源绑定,动态地渲染表格行。DataTable提供了一种灵活的方式来呈现和操作数据集,可以处理各种复杂的用户交互。 **2. 使用DataTable** 在JSF页面中,DataTable通常通过`&lt;h:datatable&gt;...

    用gridview通过代码绑定数据,同时用aspnetpager实现分页

    3. **绑定数据到GridView**:在GridView的DataSource属性中设置你的数据源(例如,DataTable),然后调用DataBind方法。代码可能看起来像这样: ``` GridView1.DataSource = yourDataTable; GridView1.DataBind()...

    ASP.NET数据库网站设计教程(C#版)[孙士保]第9章 数据绑定与数据绑定控件.ppt

    - 复杂数据绑定适用于列表控件,如 GridView,它能绑定到一个包含多条记录的数据集合,如 DataTable,并且支持排序、分页和编辑等功能。 9.1.3 数据绑定控件概览中提到了 GridView、DetailsView 和 FormView 这三种...

    net数据绑定导航

    1. **设置数据源**:首先,你需要一个数据源,例如一个`DataTable`或者从数据库查询得到的数据集`DataSet`。你可以通过`BindingSource.DataSource`属性设置这个数据源。 2. **添加BindingSource到Form**:在设计时...

    ComBox数据绑定说明

    数据绑定是指将控件(如ComboBox)与数据源(如数据库表、DataTable等)之间建立一种映射关系。当数据源发生变化时,绑定的控件会自动更新显示内容。这种机制极大地简化了数据处理过程,提高了程序的响应速度和可...

    DevExpress的GridView动态绑定数据集,多线程动态修改UI自动刷新

    在C#中,你可以使用`BindingSource`对象作为数据中介,将数据源(如DataSet或DataTable)与GridView关联起来。例如: ```csharp DataSet dataSet = new DataSet(); // 加载数据到dataSet... BindingSource binding...

Global site tag (gtag.js) - Google Analytics