自动分页 也要写分页代码的
DataGridPageIndexChanged
部分写
YoruDataGrid.CurrentPageIndex = e.NewPageIndex;
YoruBindMethod();
比如
private void dg_EditUser_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.dg_EditUser.CurrentPageIndex = e.NewPageIndex;
this.BindGrid();
}
DataGridPageIndexChanged
部分写
YoruDataGrid.CurrentPageIndex = e.NewPageIndex;
YoruBindMethod();
比如
private void dg_EditUser_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.dg_EditUser.CurrentPageIndex = e.NewPageIndex;
this.BindGrid();
}
if(!Page.IsPostBack)
{
con = new OleDbConnection();
con.ConnectionString = Application["strcon"].ToString();
con.Open();
string sql = "select * from netpartdepttree";
adapter = new OleDbDataAdapter(sql,con);
ds = new DataSet();
adapter.Fill(ds,"test");
FillDataGrid(ds);
//DataGrid1.DataSource = ds.Tables[0];
//DataGrid1.DataBind();
con.Close();
}
} private void FillDataGrid(DataSet ds)
{
DataGrid1.AutoGenerateColumns = false;
BoundColumn col;
col = new BoundColumn();
col.DataField = "id";
col.HeaderText = "ID";
DataGrid1.Columns.Add(col); DataGrid1.DataSource = ds.Tables[0];
DataGrid1.DataBind();
}
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
//Response.Write(e.CommandSource.ToString());
DataGrid1.CurrentPageIndex = e.NewPageIndex;
con = new OleDbConnection();
con.ConnectionString = Application["strcon"].ToString();
con.Open();
string sql = "select * from netpartdepttree";
adapter = new OleDbDataAdapter(sql,con);
ds = new DataSet();
adapter.Fill(ds,"test");
FillDataGrid(ds);
con.Close();
}
不好用。大家帮忙。十分感谢!!!
!
DataGrid1.DataSource = ds.Tables[0];
DataGrid1.DataBind();
进行绑定,就没有问题。但是如果用了FillDataGrid,就OVER了。哭啊
DataGrid1.DataSource = ds.Tables[0];
DataGrid1.DataBind();
就可以了,你为什么还要用FillDataGrid呢?
xiahouwen(活靶子.NET) 说得很对,你参考参考。
DataGrid1_PageIndexChanged部分
好像没有DataGrid的DataBind方法
建议你把绑定数据部分写在一个方法理
比如BindGrid()
在PageLoad内
if(!Page.IsPostBack)
{
BindGrid
}
在PageIndexChanged内
YourDataGrid.CurrentPageIndex = e.NewPageIndex;
BindGrid();
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
DataGrid1.DataBind();
}
分页代码如上
1.DataGrid1.AutoGenerateColumns = false;这个属性可以在页面里设置!
2.(对于数据量不大的表)你可以用缓存来保存已经查询出来的表,那么在分页的时候就不需要再次查询了!
你的
DataGrid1_PageIndexChanged部分
好像没有DataGrid的DataBind方法
建议你把绑定数据部分写在一个方法理
比如BindGrid()
在PageLoad内
if(!Page.IsPostBack)
{
BindGrid
}
在PageIndexChanged内
YourDataGrid.CurrentPageIndex = e.NewPageIndex;
BindGrid();
---------------------
支持活靶子.NET的这个。
private void FillDataGrid(DataSet ds)
{
DataGrid1.AutoGenerateColumns = false;
BoundColumn col;
col = new BoundColumn();
col.DataField = "id";
col.HeaderText = "ID";
DataGrid1.Columns.Add(col); DataGrid1.DataSource = ds.Tables[0];
DataGrid1.DataBind();
}
绑定的。
janssenkm(正在贴鬼故事,却碰见了鬼)(!@#$%)
xiahouwen(活靶子.NET) 你们可以试着写代码试试啊。
{
//Response.Write("123123");
//Response.Write("Page.IsPostBack");
con = new OleDbConnection();
con.ConnectionString = Application["strcon"].ToString();
con.Open();
string sql = "select * from CompactManage";
adapter = new OleDbDataAdapter(sql,con);
ds = new DataSet();
adapter.Fill(ds,"plan");
if(ds.Tables["plan"].Rows.Count>0)
{
AddColumn(ds,DataGrid1,"plan"); }
else
{
DataGrid1.Visible = false;
}
con.Close();
//Response.Write(DataGrid1.PageCount);
}
} private void AddColumn(DataSet ds,DataGrid dg,string tablename)
{
DataGrid1.CurrentPageIndex = 1;
dg.AutoGenerateColumns = false;
BoundColumn col = new BoundColumn(); //col.SortExpression = "vendor";
col = new BoundColumn();
col.HeaderText="厂家";
col.DataField="vendor";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="id";
col.DataField="id";
//col.DataFormatString = "{0:yyyy-MM-dd}";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="开始时间";
col.DataField="beginservicetime";
col.DataFormatString = "{0:yyyy-MM-dd}";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="结束时间";
col.DataField="EndServiceTime";
col.DataFormatString = "{0:yyyy-MM-dd}";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="范围";
col.DataField="Scope";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="内容";
col.DataField="Content";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="考核";
col.DataField="Assess";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="签订时间";
col.DataField="Signtime";
col.DataFormatString = "{0:yyyy-MM-dd}";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="价格";
col.DataField="Price";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="付款状态";
col.DataField="PayState";
dg.Columns.Add(col);
dg.DataSource = ds.Tables[tablename];
dg.DataBind();
//Response.Write(DataGrid1.PageIndexChanged } private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
//this.ViewState.Add("CurrentPageIndex",e.NewPageIndex);
DataGrid1.CurrentPageIndex = e.NewPageIndex;
//Response.Write("DataGrid1_PageIndexChanged");
//Response.Write(DataGrid1.CurrentPageIndex.ToString());
con = new OleDbConnection();
con.ConnectionString = Application["strcon"].ToString();
con.Open();
string sql = "select * from CompactManage";
adapter = new OleDbDataAdapter(sql,con);
ds = new DataSet();
adapter.Fill(ds,"plan1");
if(ds.Tables["plan1"].Rows.Count>0)
{
DataGrid1.Visible = true;
AddColumn(ds,DataGrid1,"plan1");
}
else
{
DataGrid1.Visible = false;
}
con.Close(); }第一次呈现时候,完全正常。但在点了“下一页”按钮后,DataGrid1就消失了。
----------------------------------------------------------------------
欢迎试用ASP.NET大文件上传组件(AspnetUpload 1.0 Release & 无刷新进度条)
http://bestcomy.europe.webmatrixhosting.net
----------------------------------------------------------------------
方法,里面有绑定啊。我设断点,用单步执行时发现个问题,根本没有执行private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)这个事件(里面都的response.write都不执行。)奇怪了
外边去!!
Page_Load()
{
BoundColumn col = new BoundColumn;
col.......; If(!Page.IsPostBack)
{
//绑定你的数据
}
}
或者在DataGrid的属性框里选中事件页,在PageIndexChanged()事件中指定你得DataGrid1_PageIndexChanged程序
給你一個例子看一看吧:
<%@ Page Language="VB" AutoEventWireup="True" Debug="true"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %><html>
<script runat="server">
dim MyConnection as OleDbConnection Sub Page_Load(sender As Object, e As EventArgs)
MyConnection = New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath(".")+"/db/data.mdb") If Not IsPostBack Then
BindGrid()
End If
End Sub Sub MyDataGrid_Page(sender as Object, e As DataGridPageChangedEventArgs)
MyDataGrid.CurrentPageIndex = e.NewPageIndex
BindGrid()
End Sub Sub BindGrid()
Dim MyCommand As OleDbDataAdapter = new OleDbDataAdapter("select * from [min]", MyConnection)
Dim DS As DataSet = new DataSet()
MyCommand.Fill(DS,"min")
MyDataGrid.DataSource = DS.Tables("min").DefaultView
MyDataGrid.DataBind()
End Sub</script>
<form runat="server">
<asp:DataGrid id="MyDataGrid"
AllowPaging="True"
PageSize="20"
OnPageIndexChanged="MyDataGrid_Page"
runat="server"
AutoGenerateColumns="False"
Width="200">
<HeaderStyle BackColor="Navy"
ForeColor="White"
Font-Bold="True" />
<PagerStyle Mode="NumericPages"
HorizontalAlign="Right" />
<Columns>
<asp:BoundColumn DataField="id" HeaderText="ID"/>
<asp:TemplateColumn HeaderText="zhuti">
<ItemTemplate>
<asp:Label ID="lblTotalPrice" Text='<%#(Container.DataItem("zhuti"))%>' Runat=server />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
数据绑定()
{
建立DataSet();
填充DateSet();
DataGrid绑定();
其他邦定();
}
{
//Response.Write("123123");
//Response.Write("Page.IsPostBack");
con = new OleDbConnection();
con.ConnectionString = Application["strcon"].ToString();
con.Open();
string sql = "select * from CompactManage";
adapter = new OleDbDataAdapter(sql,con);
ds = new DataSet();
adapter.Fill(ds,"plan");
if(ds.Tables["plan"].Rows.Count>0)
{
AddColumn(ds,DataGrid1,"plan"); }
else
{
DataGrid1.Visible = false;
}
con.Close();
//Response.Write(DataGrid1.PageCount);
}
} private void AddColumn(DataSet ds,DataGrid dg,string tablename)
{
DataGrid1.CurrentPageIndex = 1;
dg.AutoGenerateColumns = false;
BoundColumn col = new BoundColumn(); //col.SortExpression = "vendor";
col = new BoundColumn();
col.HeaderText="厂家";
col.DataField="vendor";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="id";
col.DataField="id";
//col.DataFormatString = "{0:yyyy-MM-dd}";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="开始时间";
col.DataField="beginservicetime";
col.DataFormatString = "{0:yyyy-MM-dd}";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="结束时间";
col.DataField="EndServiceTime";
col.DataFormatString = "{0:yyyy-MM-dd}";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="范围";
col.DataField="Scope";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="内容";
col.DataField="Content";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="考核";
col.DataField="Assess";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="签订时间";
col.DataField="Signtime";
col.DataFormatString = "{0:yyyy-MM-dd}";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="价格";
col.DataField="Price";
dg.Columns.Add(col); col = new BoundColumn();
col.HeaderText="付款状态";
col.DataField="PayState";
dg.Columns.Add(col);
dg.DataSource = ds.Tables[tablename];
dg.DataBind();
//Response.Write(DataGrid1.PageIndexChanged } private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
//this.ViewState.Add("CurrentPageIndex",e.NewPageIndex);
DataGrid1.CurrentPageIndex = e.NewPageIndex;
//Response.Write("DataGrid1_PageIndexChanged");
//Response.Write(DataGrid1.CurrentPageIndex.ToString());
con = new OleDbConnection();
con.ConnectionString = Application["strcon"].ToString();
con.Open();
string sql = "select * from CompactManage";
adapter = new OleDbDataAdapter(sql,con);
ds = new DataSet();
adapter.Fill(ds,"plan1");
if(ds.Tables["plan1"].Rows.Count>0)
{
DataGrid1.Visible = true;
AddColumn(ds,DataGrid1,"plan1");
}
else
{
DataGrid1.Visible = false;
}
con.Close(); }第一次呈现时候,完全正常。但在点了“下一页”按钮后,DataGrid1就消失了。我在分页的事件里,调用了绑定的事件。为什么还不行?
DataGrid1.DataBind();即可