1

您将如何从 gridview 更新 SQL 数据库?(更新记录后)

使用 - SharePoint -> 应用程序页面 - 我知道,SharePoint....“让基本的事情变得更基本,让困难的事情变得不可能”(侧面甚至没有 SQLDatasource 控件,如果需要,您必须自己添加它- 不知道他们是否不想让您在项目中添加一个或其他东西......)

我在 gridview 中显示了数据,并启用了

  AutoGenerateEditButton="True" 

在网格视图中。gridview 的数据源是我从数据库中填充的数据集。

我认为如果没有绑定到您的网格视图的 SQLDatasource,您将不得不再次连接到数据库并手动更新数据库。但是除了绑定到自动更新的gridview的SQLDataSource之外,我似乎找不到任何方法来做到这一点。

执行此操作的方法,但需要绑定到 gridview 的 SQLDatasource

方法 Nr1

方法 Nr2

编辑 gridview 后,您将如何更新数据库?

--更新解决方案--添加了一些修改。谢谢

  protected void Page_Load(object sender, EventArgs e)
        {
            int employeerId = 1;
            //Add all the employees to the list to view them.
            string query = "select emp.Name as [Employee Name], em.* from EthicsManagement em join EmployeeTable emp on em.employeeId = emp.employeeId where emp.managerId =" + employeerId;

            DataSet ds = dbConn.returnSqlDataset(query);
            grdViewDetails.DataSource = ds;
            grdViewDetails.DataBind();
            int x  = grdViewDetails.Columns.Count;

            //Hide the columns.
            grdViewDetails.DataBind();
            if (grdViewDetails.Columns.Count > 0)
            {
                grdViewDetails.Columns[2].Visible = false;
                grdViewDetails.Columns[3].Visible = false;
            }
            else
            {
                grdViewDetails.HeaderRow.Cells[0].Visible = false;
                foreach (GridViewRow gvr in grdViewDetails.Rows)
                {
                    gvr.Cells[2].Visible = false;
                    gvr.Cells[3].Visible = false;
                }
            }
        }


protected void grdViewDetails_RowEditing1(object sender, GridViewEditEventArgs e)
    {
        string query = "select emp.Name as [Employee Name], em.* from EthicsManagement em join EmployeeTable emp on em.employeeId = emp.employeeId where emp.managerId =" + 1;
        grdViewDetails.EditIndex = e.NewEditIndex;
        //e.newedit index:- will be provide index of row for which edit button is selected
        grdViewDetails.DataSource = dbConn.returnSqlDataset(query);
        grdViewDetails.DataBind();
    }



    protected void grdViewDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        string query = "select emp.Name as [Employee Name], em.* from EthicsManagement em join EmployeeTable emp on em.employeeId = emp.employeeId where emp.managerId =" + 1;

        foreach (TableCell cell in grdViewDetails.Rows[e.RowIndex].Cells)
        {
            if (cell.Controls[0] is TextBox)
            {
                TextBox textbox = (TextBox)cell.Controls[0];
                string value = textbox.Text;
            }
            else
            {
                if (cell.Controls[0] is CheckBox)
                {
                    CheckBox chkBoxWeek = (CheckBox)cell.Controls[0];
                    Boolean checkStatus = chkBoxWeek.Checked;
                }
            }
        }
4

2 回答 2

2

行编辑:当用户点击编辑按钮时,网格视图的行编辑事件将被执行。该事件将提供行索引

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        databind();
    }

行更新:这将执行回发,将执行网格视图的行更新事件过程

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        Label l = (Label)GridView1.Rows[e.RowIndex].FindControl("Label1");
        TextBox t1 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1");
        TextBox t2 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2");
        FileUpload fu = (FileUpload)GridView1.Rows[e.RowIndex].FindControl("FileUpload1");

        string fpath = Server.MapPath("images");
        string fname = fu.FileName;
        string concat = fpath + "\\" + fname;
        fu.SaveAs(concat);

        cmd = new SqlCommand("update userdata set username='" + t1.Text + "', password='" + t2.Text + "' , Image = '" + "~/images/"+ fu.FileName + "' where userid='" + Convert.ToInt32(l.Text) + "'", con);

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        GridView1.EditIndex = -1;
        databind();
    }
于 2013-11-30T11:00:24.133 回答
1

行编辑:当用户点击编辑按钮后回发生时,网格视图的行编辑事件将被执行。该事件将提供行索引

protected void gremp_rowediting(object sender,EventArgs e)
 {
   dataset ds=(dstaset)session["ds1"];
   gvemp.editindex=e.new editindex;
//e.newedit index:- will be provide index of row for which edit button is selected
   gvemp.Datasource=Ds.Table["employee"];
   gvemp.Databind();
 }

行更新:这将执行回发,将执行网格视图的行更新事件过程

protected void gvemp-rowupdating(Object sender,EvenArgs e)
 {
  Textbox txt=(Textbox)gvemp.Rows[e.RowIndex].cells[3].controls[0];
 //here i will update the third cell data in grid view
  int avg=int.parse(txt.Text);
  Dataset ds=(dataset)session["ds1"]; 
  ds.Tables["employee"].rows[e.Rowindex]["Average"]=avg;
  ds.Tables["employee"].AcceptChanges();
  session["Ds1"]=ds;
//it will overwrite the session of Dataset
//Rearrange Gridview
  gvemp.editIndex=-1;
  gvemp.Datasource=Ds.Tables["employee"];
  gvemp.DataBind();
 }

点击此链接了解更多详情:

http://www.aspdotnet-sharepoint.com/2011/11/row-editdeleteupdate-in-grid-view-using.html

于 2013-04-15T07:34:02.140 回答