在ASP中怎么在点击GridView控件的某一个单元格时能够对此单元格进行编辑,并且支持Tab键和上下左右方向键在表中的使用,也就是类似于excel的功能,只是数据时放在数据库的表中的。

解决方案 »

  1.   

    哎,我做了个repeater的不知道你要不要
      

  2.   

    gridview自带编辑
    EditTemplate
    protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
      {
      gv.EditIndex = e.RowIndex;
      int id = int.Parse(gv.DataKeys[e.RowIndex].Value.ToString());
        
      string str = ((TextBox)gv.Rows[e.RowIndex].FindControl("txt")).Text.Trim();
        
      gv.EditIndex = -1;
      BindData();
      }
     
     
      

  3.   

     <asp:TemplateField HeaderText="更新机构信息">
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        <ItemTemplate>
                        <asp:LinkButton runat="server" Text="编辑" CommandName="Edit" CausesValidation="false"></asp:LinkButton>
                        </ItemTemplate>
                        <EditItemTemplate>
                        <asp:LinkButton runat="server" Text="更新" CommandName="Update" CausesValidation="false" ID="Update"></asp:LinkButton>
                        <asp:LinkButton runat="server" Text="取消" CommandName="Cancel" CausesValidation="false"></asp:LinkButton>
                        </EditItemTemplate>
                    </asp:TemplateField>后台代码:
     protected void gvBranch_RowEditing(object sender, GridViewEditEventArgs e)
        {
            this.gvBranch.EditIndex = e.NewEditIndex;
            BindDataToGridView();
        }protected void gvBranch_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string strcon = System.Configuration.ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString;
            SqlConnection con = new SqlConnection(strcon);
            string str = gvBranch.DataKeys[e.RowIndex].Value.ToString();
            string mystr = "update dbBranchInfo set BranchName='" + ((TextBox)(this.gvBranch.Rows[e.RowIndex].Cells[1].Controls[0])).Text.Trim().ToString() +
                "',SimpleCode='" + ((TextBox)(this.gvBranch.Rows[e.RowIndex].Cells[2].Controls[0])).Text.Trim().ToString() + "'where BranchID='" + str + "'";
            SqlCommand cmd=new SqlCommand(mystr,con);
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            this.gvBranch.EditIndex = -1;
            BindDataToGridView();
        } protected void gvBranch_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gvBranch.EditIndex = -1;
            BindDataToGridView();
        }
      

  4.   

    编辑和更新  protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            bind();
        }    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string sql = "update student1 set sname='"+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString().Trim() +"',address='"+ 
               ((TextBox)GridView1.Rows[e.RowIndex ].Cells[1].Controls[0]).Text.ToString().Trim () +"',ssex='"+ 
               ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.ToString().Trim ()+"' ";
            SqlConnection sqlconn = new SqlConnection(conn);
            sqlconn.Open();
            SqlCommand cmd = new SqlCommand(sql,sqlconn);
            cmd.ExecuteNonQuery();
            sqlconn.Close();
            GridView1.EditIndex = -1;
            bind();
        }
     public void bind()
        {
            string sql = "select * from 表名";
            SqlConnection sqlconn = new SqlConnection(conn);
            SqlCommand cmd = new SqlCommand(sql,sqlconn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds,"student1");
            GridView1.DataSource = ds.Tables[0].DefaultView;
            GridView1.DataKeyNames = new string[] { "sno" };
            GridView1.DataBind();
        }
      

  5.   

    好像更新不了啊
    ((TextBox)GridView1.Rows[e.RowIndex ].Cells[1].Controls[0]).Text.ToString().Trim () +"',ssex='"+ 
               ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.ToString().Trim ()+"'
    还是原来的值啊?