我想做一个GridView的更新 
点击一行中的某一列 变为可编辑 不跳转 点击按钮修改数据库行
或者 
点击 修改按钮  将该修改按钮所在的一行的所有列变为可编辑 然后点击 更新按钮 修改数据库行

解决方案 »

  1.   

    这是GridView的常规操作,
    等LX回答
      

  2.   

    http://topic.csdn.net/u/20090212/09/fe420554-3d4f-49e0-9243-d025eb03c149.html
      

  3.   

    昏倒  我是想 只是对GridView的本页面修改 不甚了解
      

  4.   

    可以直接在GridView上修改,涉及2个事件。 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            Bind();
        }   protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["GetConnection"].ToString());
            int id = int.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
            string sqlstr = "update Product_Category set name=@name,pid=@pid,[goto]=@goto where id="+id;        
            SqlCommand cmd = new SqlCommand(sqlstr,con);
            cmd.CommandType = CommandType.Text;
            try
            {
                cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.Trim();
                cmd.Parameters.Add("@pid", SqlDbType.Int).Value = int.Parse(((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.Trim());
                cmd.Parameters.Add("@goto", SqlDbType.VarChar).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text.Trim();
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                cmd.ExecuteNonQuery();
            }
            catch { }
            finally
            {
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }
            }
            GridView1.EditIndex = -1;
            Bind();    }
      

  5.   

    http://blog.sina.com.cn/s/blog_58de85690100cncf.html
      

  6.   

    这个是GridView最基本的功能吧
      

  7.   

    老大们 GirdView 的那个<EditItemTemplate></EditItemTemplate>我是知道我意思是不用这个 点击GridView中一行中的一列 直接将这一列变成可编辑 其他列不变
      

  8.   

    不想被编辑的列加上这个属性 ReadOnly="True" 
    你点编辑的时候这列就不会被编辑了。
    要是楼主说的是动态的点击任意行任意列就编辑该行该列,这个方法就不行了。
      

  9.   

    http://topic.csdn.net/u/20090828/14/032e32d3-a37b-4436-a48c-961bb4a53e85.html
      

  10.   

    可以结贴了 怎么说呢 前后共用3个小时吧 才把这个东西给弄好  弄来弄去还是用了GridView本身功能 修改、更新、取消 算了 显显丑把代码贴出来吧
    GridView代码 <asp:GridView ID="GridView1" runat="server" CssClass="table td" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound" Width="1800px"  EmptyDataText="无数据" DataKeyField="ID"  OnRowEditing="GridView1_RowEditing" OnRowCancelingEdit="Cancel" OnRowUpdating="GridView1_RowUpdating" >
    <Columns>
    <asp:TemplateField HeaderText="日期">
                                
                                <ItemTemplate>
                                    <asp:Label ID="lblDataTime" runat="server" Text='<%# Bind("Date") %>'></asp:Label>
                                </ItemTemplate>
                                <EditItemTemplate>
    <asp:TextBox id="txtDataTime" Text='<%# Bind("Date") %>' Width="100%" Runat="server">
    </asp:TextBox>
    </EditItemTemplate>
                            </asp:TemplateField>
    .......
     <asp:TemplateField HeaderText="id" Visible="False">
                                
                                <ItemTemplate>
                                    <asp:Label ID="lblId" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                                     <%--<asp:HiddenField ID="lblId" runat="server" Value='<%# Eval("id") %>' />--%>
                                </ItemTemplate>
                            </asp:TemplateField>
    </Columns>
                        
                    </asp:GridView>后台主要代码 #region Edit
            protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
            {
                this.GridView1.EditIndex = e.NewEditIndex;
                publicModth();//绑定
            }
            #endregion        #region Cancel        protected void Cancel(object sender, GridViewCancelEditEventArgs e)
            {
                this.GridView1.EditIndex = -1;
                publicModth();();//绑定        }
            #endregion
     #region Update
           
            protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
            {            try
                {
    //更新操作
    this.GridView1.EditIndex = -1;
    }
            #endregion也就这几个事件 没了  其实我想的是JS操作 鼠标点击 那一列那一列可以输入 但是不行了技术不够 下次继续研究吧