GridView1.Columns.Clear();        CommandField cmdfield = new CommandField();
        cmdfield.ShowSelectButton = true;
        cmdfield.SelectText = "Select ";        cmdfield.ShowEditButton = true;
        cmdfield.EditText = "Edit";
        
        cmdfield.ShowDeleteButton = true;
        cmdfield.DeleteText = "Delete";        GridView1.EditIndex = -1;        cmdfield.ButtonType = ButtonType.Link;
        GridView1.Columns.Add(cmdfield);         GridView1.DataKeyNames = new string[] { "property1" };
        GridView1.DataSourceID = ObjectDataSource1.ID;
        GridView1.DataBind();
ObjectDataSource1只有一列数据就是主键property1
GridView 点编辑后不能更改内容,请问哪里出了问题!!

解决方案 »

  1.   


    你的前台要自己写<EditTemplate></....模块
      

  2.   


    aspx.cs
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Bind();
            }
        }
        public void Bind()
        {
            //创建连接
            SqlConnection con = new SqlConnection("server=.;uid=sa;password=sa;database=pubs");
            SqlDataAdapter da = new SqlDataAdapter("select * from jobs", con);
            //数据集
            DataSet ds = new DataSet();
            da.Fill(ds, "jobs");
            this.GridView1.DataSource = ds.Tables[0];
            this.GridView1.DataBind();    }
        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {    }
        /// <summary>
        /// 删除事件
        /// vs.net 2003的删除事件
        /// private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    /// {
        ///     int id=int.Parse(this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString());
    ///  
        /// }
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            int id = int.Parse(this.GridView1.Rows[e.RowIndex].Cells[0].Text);
            string sql = "delete from jobs where job_id="+id+"";
            Delete(sql);
            Bind();
        }
        /// <summary>
        /// 编辑事件
        /// vs.net 2003编辑事件
        /// private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    /// {
    ///   this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
    /// }
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            this.GridView1.EditIndex = e.NewEditIndex;
            Bind();
        }
        /// <summary>
        /// (编辑)更新事件
        /// vs.net 2003中(编辑更新事件)
        /// private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        /// {
        /// string studentPass=((TextBox)e.Item.Cells[2].Controls[0]).Text;
        /// int sex = int.Parse(((RadioButtonList)e.Item.Cells[3].FindControl("RadioButtonList1")).SelectedItem.Value);
        /// string birthday = ((TextBox)e.Item.Cells[4].Controls[0]).Text;
        /// string EMail = ((TextBox)e.Item.Cells[5].Controls[0]).Text;
        /// }
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            int id = int.Parse(((TextBox)this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text);
            string desc = ((TextBox)this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
            string min = ((TextBox)this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
            string max = ((TextBox)this.GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
            string sql = "update jobs set job_desc='" + desc + "',min_lvl=" + min + ",max_lvl=" + max + " where job_id="+ id+"";
            Update(sql);
            this.GridView1.EditIndex = -1;
            Bind();
        }
        public void Update(string sql)
        {
            SqlConnection con = new SqlConnection("server=.;uid=sa;password=sa;database=pubs");
            SqlCommand com = new SqlCommand(sql, con);
            con.Open();
            com.ExecuteNonQuery();
            con.Close();
        }
        public void Delete(string sql)
        {
            SqlConnection con = new SqlConnection("server=.;uid=sa;password=sa;database=pubs");
            SqlCommand com = new SqlCommand(sql, con);
            con.Open();
            com.ExecuteNonQuery();
            con.Close();
        }
        /// <summary>
        /// (编辑)取消事件
        /// vs.net 2003的(编辑)取消事件
        /// private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        /// {
        ///   DataGrid1.EditItemIndex=-1;
        /// }
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            this.GridView1.EditIndex = -1;
            this.Bind();
        }
    }aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!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 runat="server">
        <title>无标题页</title><!--实现对GridView删除行时弹出对话框 
         将CommandField删除字段转换为TemplateField并且添加属性OnClientClick="return confirm('您确认删除该记录吗?')"
         用HyperLinkField向页面传参
         DataNavigateUrlFields="参数" DataNavigateUrlFormatString="page.aspx?id={0}"
          -->
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" Style="position: relative" AutoGenerateColumns="False" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit">
                <Columns>
                    <asp:BoundField HeaderText="编号" DataField="job_id" />
                    <asp:BoundField HeaderText="内容" DataField="job_desc" />
                    <asp:BoundField HeaderText="最小值" DataField="min_lvl" />
                    <asp:BoundField HeaderText="最大值" DataField="max_lvl" />
                    <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
                    <asp:TemplateField ShowHeader="False">
                        <ItemTemplate>
                            <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete"
                                Text="删除" OnClientClick="return confirm('您确认删除该记录吗?')"></asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:HyperLinkField HeaderText="查看" Text="查看" DataNavigateUrlFormatString="page.aspx?id={0}" DataNavigateUrlFields="desc" />
                </Columns>
            </asp:GridView>
        
        </div>
        </form>
    </body>
    </html>
      

  3.   


    <asp:GridView ID="GridView1" runat="server">
         <Columns>
           <asp:TemplateField>
               <ItemTemplate>
                           这块是显示
               </ItemTemplate>
               <EditItemTemplate>
               
                  这块是编辑,把显示的Label都改成TextBox
               </EditItemTemplate>
           </asp:TemplateField>
         </Columns>
                </asp:GridView>