не могу обновить gridview методом обновления asp.net

я написал код для редактирования удалить и обновить gridview, но его не работал во время обновления его просто получил прошлые значения не новые
здесь код стороны сервера:

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        try
        {

            TextBox na = (TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0];
            TextBox i = (TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0];
            TextBox sid = (TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0];
            //      string a = name.Text;
            string name = na.Text;
            int id = Convert.ToInt32(i.Text);
            String stdid = sid.Text;


            String query = "update [table] set name=@name,stdid=@stdid where id=@id ";
            SqlConnection sqc = new SqlConnection(cons);
            SqlCommand qu = new SqlCommand(query, sqc);
            qu.Parameters.AddWithValue("@name", name);
            qu.Parameters.AddWithValue("@stdid", stdid);
            qu.Parameters.AddWithValue("@id", id);
            string f = qu.CommandText;
            sqc.Open();
            qu.ExecuteNonQuery();
            sqc.Close();
        }
        catch (Exception ee) { }
        refresh_dgv();
    }

а есть моя клиентская сторона трески:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"  
OnRowDeleting="GridView1_RowDeleting"OnRowEditing="GridView1_RowEditing"     OnRowUpdated="GridView1_RowUpdated" OnRowUpdating="GridView1_RowUpdating" OnSelectedIndexChanged="GridView1_SelectedIndexChanged1" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True">
         <Columns>

                <asp:BoundField DataField="id"  HeaderText ="id"/>
                <asp:BoundField DataField="name" HeaderText="name" />
                <asp:BoundField DataField="stdid" HeaderText="stdid" />  

            </Columns>  
    </asp:GridView>

1 ответ

  1. Эту проблему можно решить несколькими способами, как показано ниже.

    1.
    Мы должны проверить, опубликована ли страница обратно или нет. Если нет, то мы свяжем сетку.

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGrid();
        }
    }
    

    2.
    Использование DataKeys
    например.

     <asp:gridview id="GridView1" 
        ...
                  DataKeyNames="ProjectID"
        />
     string empsname = Convert.ToString(grdvw1.DataKeys[e.RowIndex].Values[1]);
    

    3.

    Enableviewstate свойство false gridview можно получить новое значение