简体   繁体   中英

Gridview is not updating after databind is called

I have 3 gridviews in 3 different updatepanels, which i update them after RowCommand .

GridView1.DataBind();
GridView2.DataBind();
GridView3.DataBind();

The weird thing is only GridView1_RowCommand can update all three gridview. GridView2_RowCommand using the same method but i cannot update the gridview. Please help me.

Thanks in advance.

Here is the code for Rowcommand:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    //check the commandName
    if (e.CommandName != "SaveStartTime")
        return;

    int rowIndex = int.Parse(e.CommandArgument.ToString());
    string id = GridView1.Rows[rowIndex].Cells[0].Text;

    Label time = GridView1.Rows[rowIndex].Cells[4].FindControl("ActualTimeStart") as Label;
    time.Text = DateTime.Now.ToString("HH:mm");

    var Cn = new System.Data.SqlClient.SqlConnection();
    Cn.ConnectionString = "Server=.\\SqlExpress;Database=CMOS;Trusted_Connection=True";

    Cn.Open();

    var Cm = Cn.CreateCommand();

    string store = string.Format(@"UPDATE [ApprovedExitPass] SET ActualTimeStart = '{0}' WHERE Id='{1}'", time.Text, id);
    SqlCommand cmd = new SqlCommand(store, Cn);

    cmd.Parameters.AddWithValue("@ActualTimeStart", time.Text);
    cmd.ExecuteNonQuery();
    Cn.Close();
    GridView1.DataBind();
    GridView2.DataBind();
    GridView3.DataBind();
}

protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
    //check the commandName
    if (e.CommandName != "SaveReturnTime")
        return;

    int rowIndex = int.Parse(e.CommandArgument.ToString());
    string id = GridView2.Rows[rowIndex].Cells[0].Text;
    Response.Write(id);
    Label time = GridView2.Rows[rowIndex].Cells[4].FindControl("ActualTimeArrive") as Label;
    time.Text = DateTime.Now.ToString("HH:mm");
    var Cn = new System.Data.SqlClient.SqlConnection();
    Cn.ConnectionString = "Server=.\\SqlExpress;Database=CMOS;Trusted_Connection=True";

    Cn.Open();

    var Cm = Cn.CreateCommand();

    string store = string.Format(@"UPDATE [ApprovedExitPass] SET ActualTimeArrive = '{0}' WHERE Id='{1}'", time.Text, id);
    SqlCommand cmd = new SqlCommand(store, Cn);

    cmd.Parameters.AddWithValue("@ActualTimeArrive", time.Text);
    cmd.ExecuteNonQuery();
    Cn.Close();
    GridView1.DataBind();
    GridView2.DataBind();
    GridView3.DataBind();
}

YES , gridview1_rowcommand will update all three because if you see the gridview1_rowcommand .in that method you are calling the databind of other two gridviews also . so now why this happening only while calling gridview1_rowcommand because you might be probably calling first grid row command or some other Issue.

SO probably Verify whether you getting value in Response.write(id)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM