我的数据是从数据库里找到并绑定到GridView上的,我需要对这些数据进行编辑、删除,怎么才能实现?也就是说GridView的数据源是动态的,这时候我需要编辑、删除怎么实现???

解决方案 »

  1.   

    你查找的肯定是有个标识的吧,比如ID,那就根据ID,来操作不就可以了嘛
      

  2.   

    什么意思哦?一般的GridView是直接绑定数据源,在绑定数据源的时候可以点击高级把那段允许编辑、删除的选项选上就可以了但现在是未绑定数据源???该怎么实现啊??
      

  3.   

    是不是在Gridview中没有设置datakeys
      

  4.   

    不知所云
    楼主
    说清楚点吧
     GridView 不都是gridView.datascoure=
       不就都是动态数据么
      你指的是个啥意思
      发代码
      

  5.   

    GridView“GridView1”激发了未处理的事件“RowEditing”。 报错就是这个
      

  6.   

    给你一个建议
      把按钮那一列改成模板列
         源码会变成<asp:linkbutton ...  commanName='delete'>
     然后你在gridView事件中 :
      if(e.commanName=='delete')
    {
    获取此行数据ID,执行delete()
    }
      

  7.   

    你这个错误是因为你启用了gridview编辑功能
       所以gridview 源码中已经调用了rowediting方法
     你在设计页面找到gridview的rowedinting事件
     双击就不会报错了
     你可以在这个方法里面写你想要实现的功能
      

  8.   

    http://blog.csdn.net/xianfajushi/archive/2008/11/30/3413317.aspx
      

  9.   

    好好研究下这段代码绝对帮到你.
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewUp.aspx.cs" Inherits="gridview_GridViewUp" %>                        <asp:GridView ID="GridView1" runat="server" Width="100%" CellPadding="4" ForeColor="#333333"
                                AutoGenerateColumns="False" AllowPaging="True" PageSize="12" OnRowCancelingEdit="GridView1_RowCancelingEdit"
                                OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_RowDeleting"
                                DataKeyNames="id,name" OnPageIndexChanging="GridView1_PageIndexChanging" DataMember="card,price" OnRowDataBound="GridView1_RowDataBound" GridLines="None">
                                <Columns>
                                    <asp:BoundField HeaderText="身份证号" DataField="card" Visible=false />
                                    <asp:BoundField HeaderText="编号" DataField="id" ReadOnly="True" />
                                    <asp:BoundField DataField="name" HeaderText="姓名" ReadOnly="True" />
                                    <asp:TemplateField HeaderText="身份证号">
                                        <ItemTemplate>
                                            <%# eval_r("card") %>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox ID="TBCard" Text='<%# eval_r("card") %>' runat="server" Width="140px" />
                                        </EditItemTemplate>
                                        <ItemStyle Width="150px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="学历">
                                        <ItemTemplate>
                                            <%# eval_r("description")%>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:HiddenField ID="HDFXueli" runat="server" Value='<%# eval_r("xueli") %>' />
                                            <asp:DropDownList ID="DDLXueli" runat="server" Width="90px" />
                                        </EditItemTemplate>
                                        <ItemStyle Width="100px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="价格">
                                        <ItemTemplate>
                                            <%# eval_r("price") %>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox ID="TBPrice" Text='<%# eval_r("price") %>' runat="server" Width="90px" />
                                        </EditItemTemplate>
                                        <ItemStyle Width="100px" />
                                    </asp:TemplateField>
                                    <asp:BoundField HeaderText="建立时间" DataField="createdate" ReadOnly="True" />
                                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" HeaderText="操作" />
                                </Columns>
                                <PagerSettings FirstPageText="" LastPageText="" NextPageText="" PreviousPageText="" />
                                <RowStyle Height="20px" BackColor="#F7F6F3" ForeColor="#333333" />
                                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <EditRowStyle BackColor="#999999" />
                                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                            </asp:GridView>
         GridViewUp.aspx.cs文件代码:
    public partial class gridview_GridViewUp : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GridViewBind();
            }
        }    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            GridViewBind();
        }    private void GridViewBind()
        {
            string connStr = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
            string SqlStr = "Select a.*,b.description FROM test01 a,xueli b where a.xueli=b.code and a.id<1000 and a.id>200";
            DataSet ds = new DataSet();        try
            {
                SqlConnection conn = new SqlConnection(connStr);
                if (conn.State.ToString() == "Closed") conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(SqlStr, conn);
                da.Fill(ds, "test01");
                if (conn.State.ToString() == "Open") conn.Close();            GridView1.DataSource = ds.Tables[0].DefaultView;
                GridView1.DataBind();
            }
            catch (Exception ex)
            {
                Response.Write("数据库错误,错误原因:" + ex.Message);
                Response.End();
            }
        }    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (((DropDownList)e.Row.FindControl("DDLXueli")) != null)
            {       
                DropDownList ddlxueli = (DropDownList)e.Row.FindControl("DDLXueli");            // 生成 DropDownList 的值,绑定数据
                string connStr = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
                string SqlStr = "Select * from xueli";
                DataSet ds = new DataSet();            SqlConnection conn = new SqlConnection(connStr);
                if (conn.State.ToString() == "Closed") conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(SqlStr, conn);
                da.Fill(ds, "xueli");
                if (conn.State.ToString() == "Open") conn.Close();            ddlxueli.DataSource = ds.Tables[0].DefaultView;
                ddlxueli.DataTextField = "description";
                ddlxueli.DataValueField = "code";
                ddlxueli.DataBind();
                //            // 选中 DropDownList
                ddlxueli.SelectedValue = ((HiddenField)e.Row.FindControl("HDFXueli")).Value;
                //
            }
        }    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            GridViewBind();
        }
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            GridViewBind();
        }    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString();
            string card = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TBCard")).Text;
            string xueli = ((DropDownList)GridView1.Rows[e.RowIndex].FindControl("DDLXueli")).SelectedValue;
            string price = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TBPrice")).Text;        string connStr = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
            string SqlStr = "update test01 set card='" + card + "',xueli='" + xueli + "',price='" + price + "' where id=" + id;        try
            {
                SqlConnection conn = new SqlConnection(connStr);
                if (conn.State.ToString() == "Closed") conn.Open();
                SqlCommand comm = new SqlCommand(SqlStr, conn);
                comm.ExecuteNonQuery();
                comm.Dispose();
                if (conn.State.ToString() == "Open") conn.Close();            GridView1.EditIndex = -1;
                GridViewBind();
            }
            catch (Exception ex)
            {
                Response.Write("数据库错误,错误原因:" + ex.Message);
                Response.End();
            }
        }    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString();
            string connStr = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
            string SqlStr = "delete from test01 where id=" + id;        try
            {
                SqlConnection conn = new SqlConnection(connStr);
                if (conn.State.ToString() == "Closed") conn.Open();
                SqlCommand comm = new SqlCommand(SqlStr, conn);
                comm.ExecuteNonQuery();
                comm.Dispose();
                if (conn.State.ToString() == "Open") conn.Close();            GridView1.EditIndex = -1;
                GridViewBind();
            }
            catch (Exception ex)
            {
                Response.Write("数据库错误,错误原因:" + ex.Message);
                Response.End();
            }
        }
    }sql server2000生成表代码:
    Create TABLE [dbo].[test01] (
        [id] [decimal](18, 0) IDENTITY (1, 1) NOT NULL ,
        [name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
        [card] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
        [xueli] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
        [price] [decimal](18, 0) NULL ,
        [createdate] [datetime] NULL
    ) ON [PRIMARY]
    GOAlter TABLE [dbo].[test01] ADD
        CONSTRAINT [DF_test01_createdate] DEFAULT (getdate()) FOR [createdate],
        CONSTRAINT [PK_test01] PRIMARY KEY CLUSTERED
        (
            [id]
        ) ON [PRIMARY]
    GO
    Create TABLE [dbo].[xueli](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [code] [int] NULL,
        [description] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    CONSTRAINT [PK_xueli] PRIMARY KEY CLUSTERED
    (
        [id] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]
      

  10.   

    gridview 72绝技
    http://blog.csdn.net/21aspnet/archive/2007/03/25/1540301.aspx