edit.aspx
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data"%>
<%@ Page language="c#" EnableViewState = "true" Codebehind="edit.aspx.cs"
 AutoEventWireup="false" Inherits="eMeng.Exam.DataGridPaging1.DataGridPaging" %>
<HTML>
<HEAD>
</HEAD>
<body>
<form id="Form1" runat="server">
<asp:datagrid id="MyDataGrid" runat="server" AutoGenerateColumns="False" HorizontalAlign="Center"
AlternatingItemStyle-BackColor="#eeeeee" HeaderStyle-BackColor="#aaaadd" Font-Size="8pt" Font-Name="Verdana"
CellSpacing="0" CellPadding="3" GridLines="Both" BorderWidth="1" BorderColor="black" OnPageIndexChanged="MyDataGrid_Page"
PagerStyle-HorizontalAlign="Right" PagerStyle-Mode="NumericPages" PageSize="5" AllowPaging="True"
OnEditCommand="MyDataGrid_Edit" OnCancelCommand="MyDataGrid_Cancel" OnUpdateCommand="MyDataGrid_Update"
OnDeleteCommand="MyDataGrid_Delete">
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center"></HeaderStyle>
<PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
<Columns>
    <asp:BoundColumn HeaderText="ID" ReadOnly="true"  Visible=False/>
<asp:BoundColumn HeaderText="标题" DataField="Title" HeaderStyle-Width="480px"></asp:BoundColumn>
<asp:BoundColumn HeaderText="发表日期" DataField="CreateDate" DataFormatString="{0:yyyy-MM-dd hh:mm:ss}"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="修改" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn HeadERText="删除" Text="Delete" CommandName="Delete"></asp:ButtonColumn>
</Columns>
</asp:datagrid>
<p style="FONT-SIZE:9pt" align="center">
<asp:label id="lblPageCount" runat="server"></asp:label>&nbsp;
<asp:label id="lblCurrentIndex" runat="server"></asp:label>
<asp:linkbutton id="btnFirst" onclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
ForeColor="navy" CommandArgument="0"></asp:linkbutton>&nbsp;
<asp:linkbutton id="btnPrev" onclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
ForeColor="navy" CommandArgument="prev"></asp:linkbutton>&nbsp;
<asp:linkbutton id="btnNext" onclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
ForeColor="navy" CommandArgument="next"></asp:linkbutton>&nbsp;
<asp:linkbutton id="btnLast" onclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
ForeColor="navy" CommandArgument="last"></asp:linkbutton>
</p>
</form>
</body>
</HTML>
edit.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace eMeng.Exam.DataGridPaging1
{
/// <summary>
/// DataGridPaging 的摘要说明。
/// </summary>
public class DataGridPaging : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid MyDataGrid;
protected System.Web.UI.WebControls.Label lblPageCount;
protected System.Web.UI.WebControls.Label lblCurrentIndex;
protected System.Web.UI.WebControls.LinkButton btnFirst;
protected System.Web.UI.WebControls.LinkButton btnPrev;
protected System.Web.UI.WebControls.LinkButton btnNext;
protected System.Web.UI.WebControls.LinkButton btnLast;
private OleDbConnection cn = new OleDbConnection(); private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
btnFirst.Text = "最首页";
btnPrev.Text = "前一页";
btnNext.Text = "下一页";
btnLast.Text = "最后页";
OpenDatabase();
BindGrid();
}
private void OpenDatabase()
{
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("test.mdb");
cn.Open();
}
private void ShowStats()
{
lblCurrentIndex.Text = "第 " + (MyDataGrid.CurrentPageIndex + 1).ToString() + " 页";
lblPageCount.Text = "总共 " + MyDataGrid.PageCount.ToString() + " 页";
} public void PagerButtonClick(object sender, EventArgs e)
{
string arg = ((LinkButton)sender).CommandArgument.ToString();
switch(arg)
{
case "next":
if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
{
MyDataGrid.CurrentPageIndex += 1;
}
break;
case "prev":
if (MyDataGrid.CurrentPageIndex > 0)
{
MyDataGrid.CurrentPageIndex -= 1;
}
break;
case "last":
MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
break;
default:
MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg);
break;
}
BindGrid();
ShowStats();
}
public void BindGrid()
{
OleDbConnection myConnection = cn;
DataSet ds  = new DataSet();
OleDbDataAdapter adapter  = new OleDbDataAdapter("Select ID, Title,CreateDate from Document", myConnection);
adapter.Fill(ds, "Document");
MyDataGrid.DataSource = ds.Tables["Document"].DefaultView;
MyDataGrid.DataBind();
ShowStats();
}
public void MyDataGrid_Page(object sender, DataGridPageChangedEventArgs e)
{
int startIndex ;
startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize;
MyDataGrid.CurrentPageIndex = e.NewPageIndex;
BindGrid();
ShowStats();
}
public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) 
{
MyDataGrid.EditItemIndex = e.Item.ItemIndex;
//MyDataGrid.DataSource = CreateDataSource();
MyDataGrid.DataBind(); }
public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) 
{
MyDataGrid.EditItemIndex = -1;
//MyDataGrid.DataSource = CreateDataSource();
MyDataGrid.DataBind(); }
public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) 
{
string Title = ((TextBox)e.Item.Cells[1].Controls[1]).Text;
string CreateDate = ((TextBox)e.Item.Cells[2].Controls[1]).Text; //OleDbConnection cnUpdate = new SqlConnection(strCnn);
OleDbConnection myupdate = cn;
           // mycmd = New OleDbCommand(mysql,mycn);
myupdate.Open();
String sql_edit = "UPDATE Document " +
"SET Title = '" + Title.Replace("'","''")+ "'," +
"CreateDate = '" + CreateDate.Replace("'","''")+ "'" +
" WHERE ID = " + e.Item.Cells[0].Text;
            OleDbCommand myCommand = new OleDbCommand(sql_edit, myupdate);
//SqlCommand sqlCommandUpdate = new SqlCommand(sql_edit,connUpdate);
myCommand.ExecuteNonQuery();
myupdate.Close();

MyDataGrid.EditItemIndex = -1;
//MyDataGrid.DataSource = CreateDataSource();
MyDataGrid.DataBind(); }
public void MyDataGrid_Delete(Object sender, DataGridCommandEventArgs e) 
{
MyDataGrid.EditItemIndex = -1;
//MyDataGrid.DataSource = CreateDataSource();
MyDataGrid.DataBind(); }
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
} /// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}由于分页与更新分别参照了两个代码,我就不会了
更新不了,大虾救命。
我是蔡鸟,不要笑我啊

解决方案 »

  1.   

    InitializeComponent() 里没有注册事件
      

  2.   

    请问具体怎么注册呢???叶面开始显示的时候没有问题
    一按更新出现如下:
    应用程序中的服务器错误。
    --------------------------------------------------------------------------------指定的参数已超出有效值的范围。参数名: index 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: index源错误: 
    行 109: public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) 
    行 110: {
    行 111: string Title = ((TextBox)e.Item.Cells[1].Controls[1]).Text;
    行 112: string CreateDate = ((TextBox)e.Item.Cells[2].Controls[1]).Text;
    行 113:
     源文件: d:\20041017-1\edit.aspx.cs    行: 111