这个是别人的东西的噢  
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default9.aspx.cs" Inherits="Default9" EnableViewState="true"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %><script runat="server">  
  
private int EditId = 0;
private String ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\ASPNET20Book.mdb;";
</script><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>GridView 插入、删除、修改的例子</title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
  OnRowDataBound="GridView1_RowDataBound" ShowFooter="true">
  <HeaderStyle BackColor="#ccff99" Font-Bold="true" />
  <Columns>
    <asp:TemplateField HeaderText="姓名">
      <ItemTemplate>
        <asp:PlaceHolder ID="LabelTitle" runat="server">
          <%#Eval("Title") %></asp:PlaceHolder>
        <asp:TextBox ID="uTitle" runat="server" Text='<%#Eval("Title") %>' Visible="false"></asp:TextBox>
      </ItemTemplate>
      <FooterTemplate>
        <asp:TextBox ID="NewTitle" runat="server"></asp:TextBox>
      </FooterTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="生日(yyyy-MM-dd格式)">
      <ItemTemplate>
        <asp:PlaceHolder ID="LabelBirthday" runat="server">
          <%#Eval("BirthDay", "{0:yyyy-MM-dd}")%></asp:PlaceHolder>
        <asp:TextBox ID="uBirthDay" runat="server" Text='<%# Eval("BirthDay", "{0:yyyy-MM-dd}") %>'
          Visible="False" />
      </ItemTemplate>
      <FooterTemplate>
        <asp:TextBox ID="NewBirthDay" runat="server"></asp:TextBox>
      </FooterTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="性别">
      <ItemTemplate>
        <asp:PlaceHolder ID="LabelGender" runat="server">
          <%#(Eval("Gender")).ToString() =="True"?"男":"女"%></asp:PlaceHolder>
        <asp:RadioButtonList ID="uGender" runat="server" RepeatDirection="Horizontal" Visible="false">
          <asp:ListItem Text="男"></asp:ListItem>
          <asp:ListItem Text="女"></asp:ListItem>
        </asp:RadioButtonList>
      </ItemTemplate>
      <FooterTemplate>
        <asp:RadioButtonList ID="NewGender" runat="server" RepeatDirection="Horizontal">
          <asp:ListItem Selected="true" Text="男"></asp:ListItem>
          <asp:ListItem Text="女"></asp:ListItem>
        </asp:RadioButtonList>
      </FooterTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="年级">
      <ItemTemplate>
        <asp:PlaceHolder ID="LabelClassName" runat="server">
          <%#Eval("ClassName")%></asp:PlaceHolder>
        <asp:DropDownList ID="uClassName" runat="server" Visible="false">
          <asp:ListItem Text="小学" Value="小学"></asp:ListItem>
          <asp:ListItem Text="中学" Value="中学"></asp:ListItem>
          <asp:ListItem Text="高中" Value="高中"></asp:ListItem>
          <asp:ListItem Text="大学" Value="大学"></asp:ListItem>
        </asp:DropDownList>
      </ItemTemplate>
      <FooterTemplate>
        <asp:DropDownList ID="NewClassName" runat="server">
          <asp:ListItem Text="小学" Value="小学"></asp:ListItem>
          <asp:ListItem Text="中学" Value="中学"></asp:ListItem>
          <asp:ListItem Text="高中" Value="高中"></asp:ListItem>
          <asp:ListItem Text="大学" Value="大学"></asp:ListItem>
        </asp:DropDownList>
      </FooterTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="照片">
      <ItemTemplate>
        <asp:PlaceHolder ID="LabelPhoto" runat="server">
          <%# GetUserPhoto(Eval("PhotoPath")) %></asp:PlaceHolder>
        <asp:FileUpload ID="uPhoto" runat="server" Visible="false" />
      </ItemTemplate>
      <FooterTemplate>
        <asp:FileUpload ID="AddPhoto" runat="server" />
      </FooterTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="操作">
      <ItemTemplate>
        <asp:Panel ID="PanelNormal" runat="server">
          <asp:Button ID="EditButton" runat="server" Text="修改" OnClick="EditClick" CommandArgument='<%#Eval("id") %>' />
          <asp:Button ID="DeleteButton" runat="server" Text="删除" OnClick="DeleteClick" CommandArgument='<%#Eval("id") %>' />
        </asp:Panel>
        <asp:Panel ID="PanelUpdate" runat="server" Visible="false">
          <asp:Button ID="UpdateButton" runat="server" Text="更新" OnClick="UpdateClick" CommandArgument='<%#Eval("id") %>' />
          <asp:Button ID="CancelButton" runat="server" Text="取消" OnClick="CancelClick" />
        </asp:Panel>
      </ItemTemplate>
      <FooterTemplate>
        <asp:Button ID="AddButton" runat="server" Text="添加新纪录" OnClick="AddClick" />
      </FooterTemplate>
    </asp:TemplateField>
  </Columns>
  <EmptyDataTemplate>
    <table cellspacing="0" rules="all" border="1" style="border-collapse: collapse;">
      <tr>
        <th>姓名</th>
        <th>生日(yyyy-MM-dd格式)</th>
        <th>性别</th>
        <th>年级</th>
        <th>照片</th>
        <th>操作</th>
      </tr>
      <tr>
        <td>
          <asp:TextBox ID="NewTitle" runat="server"></asp:TextBox>
        </td>
        <td>
          <asp:TextBox ID="NewBirthDay" runat="server"></asp:TextBox>
        </td>
        <td>
          <asp:RadioButtonList ID="NewGender" runat="server" RepeatDirection="Horizontal">
            <asp:ListItem Selected="true" Text="男"></asp:ListItem>
            <asp:ListItem Text="女"></asp:ListItem>
          </asp:RadioButtonList>
        </td>
        <td>
          <asp:DropDownList ID="NewClassName" runat="server">
            <asp:ListItem Text="小学" Value="小学"></asp:ListItem>
            <asp:ListItem Text="中学" Value="中学"></asp:ListItem>
            <asp:ListItem Text="高中" Value="高中"></asp:ListItem>
            <asp:ListItem Text="大学" Value="大学"></asp:ListItem>
          </asp:DropDownList>
        </td>
        <td>
          <asp:FileUpload ID="AddPhoto" runat="server" />
        </td>
        <td>
          <asp:Button ID="b" runat="server" Text="添加学生" OnClick="AddClick" />
        </td>
      </tr>
    </table>
  </EmptyDataTemplate>
</asp:GridView>
<div id="Pager" runat="server" style="text-align:left;padding:10px 0;"></div>
<asp:Label ID="ErrorMsg" runat="server" ForeColor="red"></asp:Label>
</form>
</body>
</html>

解决方案 »

  1.   

    后台:
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Data.OleDb;
    using System.Xml.Linq;public partial class Default9 : System.Web.UI.Page
    {
        private int EditId = 0;
        private String ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\ASPNET20Book.mdb;";
        private string GetUserPhoto(object pathPhoto)
        {
            if (pathPhoto == DBNull.Value)
            {
                return "<img src='Images/none.gif'>";
            }
            else
            {
                return "<img src='" + pathPhoto.ToString() + "'>";
            }
        }
        /// <summary>
        /// 数据绑定的处理。在需要编辑时,显示出编辑框
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (EditId > 0)
                {
                    //如果绑定数据源是DatarReader,则使用下面的方法:
                    //System.Data.Common.DbDataRecord rowItem = (System.Data.Common.DbDataRecord)e.Row.DataItem;                //如果绑定是 DataView,则使用此方法
                    System.Data.DataRowView rowItem = (System.Data.DataRowView)e.Row.DataItem;
                    if (rowItem["id"].ToString().Equals(EditId.ToString()))
                    {
                        //隐藏显示的文字
                        PlaceHolder LabelTitle = e.Row.FindControl("LabelTitle") as PlaceHolder;
                        LabelTitle.Visible = false;
                        PlaceHolder LabelBirthday = e.Row.FindControl("LabelBirthday") as PlaceHolder;
                        LabelBirthday.Visible = false;
                        PlaceHolder LabelGender = e.Row.FindControl("LabelGender") as PlaceHolder;
                        LabelGender.Visible = false;
                        PlaceHolder LabelClassName = e.Row.FindControl("LabelClassName") as PlaceHolder;
                        LabelClassName.Visible = false;
                        PlaceHolder LabelPhoto = e.Row.FindControl("LabelPhoto") as PlaceHolder;
                        LabelPhoto.Visible = false;                    //打开编辑框
                        TextBox uTitle = e.Row.FindControl("uTitle") as TextBox;
                        uTitle.Visible = true;                    TextBox uBirthDay = e.Row.FindControl("uBirthDay") as TextBox;
                        uBirthDay.Visible = true;                    RadioButtonList uGender = e.Row.FindControl("uGender") as RadioButtonList;
                        uGender.Visible = true;                    DropDownList uClassName = e.Row.FindControl("uClassName") as DropDownList;
                        uClassName.Visible = true;                    FileUpload uPhoto = e.Row.FindControl("uPhoto") as FileUpload;
                        uPhoto.Visible = true;                    //赋原来的值
                        if (rowItem["Gender"] != DBNull.Value)
                        {
                            uGender.SelectedIndex = (Convert.ToBoolean(rowItem["Gender"]) ? 0 : 1);
                        }                    if (rowItem["ClassName"] != DBNull.Value)
                        {
                            uClassName.Items.FindByText(rowItem["ClassName"].ToString()).Selected = true;
                        }                    //显示编辑更新按钮
                        Panel PanelNormal = e.Row.FindControl("PanelNormal") as Panel;
                        PanelNormal.Visible = false;                    Panel PanelUpdate = e.Row.FindControl("PanelUpdate") as Panel;
                        PanelUpdate.Visible = true;
                    }
                }
            }
        }    /// <summary>
        /// 打开编辑框,将编辑标识传递到 EditId
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void EditClick(object sender, EventArgs e)
        {
            Button b = sender as Button;
            EditId = Convert.ToInt32(b.CommandArgument);        GridViewRow dvr = b.NamingContainer as GridViewRow;
            EditId = (int)GridView1.DataKeys[dvr.DataItemIndex].Value;
            DataBind();
            //Response.Write(GridView1.DataKeys[dvr.DataItemIndex].Value);    }    /// <summary>
        /// 将编辑的数据保存
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void UpdateClick(object sender, EventArgs e)
        {
            Button b = sender as Button;
            GridViewRow dvr = b.NamingContainer as GridViewRow;
            TextBox uTitle = dvr.FindControl("uTitle") as TextBox;        string StudentTitle = uTitle.Text;
            string StudentBirthDay = ((TextBox)dvr.FindControl("uBirthDay")).Text;
            bool StudentGender = ((RadioButtonList)dvr.FindControl("uGender")).SelectedValue == "男" ? true : false;
            string StudentClassName = ((DropDownList)dvr.FindControl("uClassName")).SelectedValue;
            string StudentID = GridView1.DataKeys[dvr.RowIndex].Value.ToString();
            string sql = "";
            String PhotoPath = "";
            bool HasFileUploaded = false;        FileUpload oUpload = (FileUpload)dvr.FindControl("uPhoto");
            if (oUpload.HasFile)
            {
                PhotoPath = Guid.NewGuid().ToString("D") + System.IO.Path.GetExtension(oUpload.FileName);
                oUpload.SaveAs(Server.MapPath("~") + "\\" + PhotoPath);
                HasFileUploaded = true;
            }        if (HasFileUploaded)
            {
                sql = "Update Student Set Title=@Title,BirthDay = @BirthDay,";
                sql += "Gender=@Gender,PhotoPath=@PhotoPath,ClassName=@ClassName Where id=@id";
            }
            else
            {
                sql = "Update Student Set Title=@Title,BirthDay = @BirthDay,";
                sql += "Gender=@Gender,ClassName=@ClassName Where id=@id";
            }        OleDbConnection cn = new OleDbConnection(ConnectionString);
            cn.Open();
            OleDbCommand cmd = new OleDbCommand(sql, cn);        cmd.Parameters.AddWithValue("@Title", StudentTitle);
            cmd.Parameters.AddWithValue("@BirthDay", StudentBirthDay);
            cmd.Parameters.AddWithValue("@Gender", StudentGender);
            if (HasFileUploaded)
            {
                cmd.Parameters.AddWithValue("@PhotoPath", PhotoPath);
            }
            cmd.Parameters.AddWithValue("@ClassName", StudentClassName);
            cmd.Parameters.AddWithValue("@id", StudentID);
            cmd.ExecuteNonQuery();
            cn.Close();        Response.Redirect(Request.Url.ToString());    }
    Default9.GetUserPhoto(object)”不可访问,因为它受保护级别限制
      

  2.   

    下半段    /// <summary>
        /// 添加新记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void AddClick(object sender, EventArgs e)
        {
            InsertNewRecord(sender, e);
        }    /// <summary>
        /// 取消编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void CancelClick(object sender, EventArgs e)
        {
            Response.Redirect(Request.UrlReferrer.ToString());
        }    /// <summary>
        /// 删除记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void DeleteClick(object sender, EventArgs e)
        {
            Button b = sender as Button;
            int id = Convert.ToInt32(b.CommandArgument);
            OleDbConnection cn = new OleDbConnection(ConnectionString);
            cn.Open();
            OleDbCommand cmd = new OleDbCommand("Delete From [Student] Where [id]=@id", cn);
            cmd.Parameters.AddWithValue("@id", id);
            cmd.ExecuteNonQuery();
            cn.Close();
            Response.Redirect(Request.Url.ToString());
        }    /// <summary>
        /// 插入新记录的公共函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void InsertNewRecord(object sender, EventArgs e)
        {
            string StudentTitle = ((TextBox)(sender as Button).NamingContainer.FindControl("NewTitle")).Text;
            if (StudentTitle.Trim() == "")
            {
                ErrorMsg.Text = "请输入姓名";
                return;
            }
            string StudentBirthDay = ((TextBox)(sender as Button).NamingContainer.FindControl("NewBirthDay")).Text;
            bool StudentGender = ((RadioButtonList)
              (sender as Button).NamingContainer.FindControl("NewGender")).SelectedValue == "男" ? true : false;
            string StudentClassName = ((DropDownList)
              (sender as Button).NamingContainer.FindControl("NewClassName")).SelectedValue;
            FileUpload oUpload = (FileUpload)(sender as Button).NamingContainer.FindControl("AddPhoto");
            String FileName = "";
            FileName = Guid.NewGuid().ToString("D") + System.IO.Path.GetExtension(oUpload.FileName);
            oUpload.SaveAs(Server.MapPath("~") + "\\" + FileName);
            string sql = "Insert Into Student (Title,BirthDay,Gender,PhotoPath,ClassName)";
            sql += " Values(@Title,@BirthDay,@Gender,@PhotoPath,@ClassName)";
            OleDbConnection cn = new OleDbConnection(ConnectionString);
            cn.Open();        OleDbCommand cmd = new OleDbCommand(sql, cn);
            cmd.Parameters.AddWithValue("@Title", StudentTitle);
            cmd.Parameters.AddWithValue("@BirthDay", StudentBirthDay);
            cmd.Parameters.AddWithValue("@Gender", StudentGender);
            cmd.Parameters.AddWithValue("@PhotoPath", FileName);
            cmd.Parameters.AddWithValue("@ClassName", StudentClassName);        cmd.ExecuteNonQuery();
            cn.Close();
            Response.Redirect(Request.FilePath.ToString());
        }    /// <summary>
        /// 生成 Google 样式的分页
        /// </summary>
        /// <param name="TotalCountRecord"></param>
        /// <param name="CurrentPage"></param>
        /// <param name="PageItem"></param>    //每页显示的记录数
        private int PageItem = 10;
        private void BuildPagers(int TotalCountRecord, int CurrentPage)
        {
            int Step = 6;
            int LeftNum = 0;
            int RightNum = 0;
            String PageUrl = "?";
            int PageCount = (int)Math.Ceiling((double)(TotalCountRecord) / PageItem);        if (CurrentPage - Step < 1)
            {
                LeftNum = 1;
            }
            else
            {
                LeftNum = CurrentPage - Step;
            }        if (CurrentPage + Step > PageCount)
            {
                RightNum = PageCount;
            }
            else
            {
                RightNum = CurrentPage + Step;
            }
            string OutPut = "";
            for (int i = LeftNum; i <= RightNum; i++)
            {
                if (i == CurrentPage)
                {
                    OutPut += "<span style='color:red'>" + i.ToString() + "</span> ";
                }
                else
                {
                    OutPut += "<a href=\"" + PageUrl + "Page=" + i.ToString() + "\">" + i.ToString() + "</a> ";
                }
            }
            if (CurrentPage > 1)
            {
                OutPut = "<a href='" + PageUrl + "Page=1'>首页</a>  <a href=\"" + PageUrl + "Page=" + (CurrentPage - 1) + "\">上一页</a> " + OutPut;
            }        if (CurrentPage < PageCount)
            {
                OutPut += " <a href=\"" + PageUrl + "Page=" + (CurrentPage + 1) + "\">下一页</a> <a href='" + PageUrl + "Page=" + PageCount + "'>末页</a>";
            }
            Pager.InnerHtml = OutPut;
        }
        /// <summary>
        /// 加载页面
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                DataBind();
            }
        }    /// <summary>
        /// 绑定 GridView
        /// </summary>
        protected void DataBind()
        {
            OleDbCommand cmd;
            String sql;
            OleDbConnection cn = new OleDbConnection(ConnectionString);
            cn.Open();
            // 由于是 Access 数据库,我们只进行简单的分页。对于性能要求较高的地方,请自行采取其他方法。
            sql = "SELECT COUNT(*) FROM [Student]";
            cmd = new OleDbCommand(sql, cn);        // 总的记录数
            int TotalCount = Convert.ToInt32(cmd.ExecuteScalar());
            //当前页的序号
            int PageIndex = 1;
            String page = Request.QueryString["Page"];
            if (page == null) page = "1";
            Int32.TryParse(page, out PageIndex);
            if (PageIndex < 1) PageIndex = 1;
            int PageCount = (int)Math.Ceiling((double)(TotalCount) / PageItem);
            if (PageIndex > PageCount) PageIndex = PageCount;        int startRecord = (PageIndex - 1) * PageItem;        sql = "SELECT * FROM [Student] ORDER BY [id] DESC";        OleDbDataAdapter da = new OleDbDataAdapter(sql, cn);
            DataSet ds = new DataSet();
            da.Fill(ds, startRecord, PageItem, "Student");        GridView1.DataSource = ds.Tables[0].DefaultView;
            GridView1.DataBind();
            cn.Close();
            BuildPagers(TotalCount, PageIndex);    }}
    Default9.GetUserPhoto(object)”不可访问,因为它受保护级别限制
      

  3.   

    只改外部需要调用的,如
    private string GetUserPhoto(object pathPhoto)
    改成
    public string GetUserPhoto(object pathPhoto)