ASP.NET c#Gridview OnRowUpdating无法正常工作

时间:2017-04-12 10:27:16

标签: c# asp.net gridview

我在Visual Studio 2015中工作。 加载Gridview时,我可以点击“编辑”。 当我点击取消时,我只是回到Gridview。 这很好,但是如果我点击“更新”,他就会像“取消”那样做同样的事情。没有错误。

以下是OnRowUpdating的方法:

protected void UpdateHandleiding(object sender, GridViewUpdateEventArgs e)
        {         
            SqlConnection Sqlconnection1 = new SqlConnection();
            Sqlconnection1.ConnectionString = (System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            //string ID = ((Label)GridView1.Rows[e.RowIndex].FindControl("lblID")).Text;
            //string Naam = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtNaam")).Text;
            //string URL = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtURL")).Text;

            GridViewRow row = GridView1.Rows[e.RowIndex];
            int ID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
            string Naam = (row.Cells[1].Controls[0] as TextBox).Text;
            string URL = (row.Cells[2].Controls[0] as TextBox).Text;

            using (SqlConnection con = new SqlConnection(strConnString))
            {
                using (SqlCommand cmd = new SqlCommand("UPDATE Handleidingen SET Naam=@Naam, URL=@URL WHERE ID=@ID"))
                {
                    cmd.Parameters.AddWithValue("@ID", ID);
                    cmd.Parameters.AddWithValue("@Naam", Naam);
                    cmd.Parameters.AddWithValue("@URL", URL);
                    cmd.Connection = con;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }

            }

            GridView1.EditIndex = -1;
            GridView1.DataBind();
        }

这是我的OnRowEditing& OnRowCancelingEdit可以工作:

    protected void EditHandleiding(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        ShowHandleidingen();
    }
    protected void CancelEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;
        ShowHandleidingen();
    }

这是我的Gridview:

                    <asp:GridView ID="GridView1" runat="server" CssClass="grid-center" AutoGenerateColumns="False"
                        DataKeyNames="ID" EnableModelValidation="True" OnRowDeleting="GridView1_RowDeleting"
                        OnRowEditing="EditHandleiding" OnRowUpdating="UpdateHandleiding" OnRowCancelingEdit="CancelEdit">
                        <Columns>
                            <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" />
                            <asp:BoundField DataField="Naam" HeaderText="Naam"/>
                            <asp:BoundField DataField="URL" HeaderText="URL"/>
                            <asp:CommandField ShowEditButton="True" />
                            <asp:CommandField ShowDeleteButton="true" />
                        </Columns>
                    </asp:GridView>

3 个答案:

答案 0 :(得分:0)

这是由asp.net中的回发事件引起的简单情况,在Update方法中页面从开始重新加载,即使你给数据提供了新值,你也想在数据库中提交asp。 net将在page_load方法中取一个,当你在page_load方法的第一个位置填充数据库时添加这个条件:

   private void Page_Load()
{
    if (!IsPostBack)
    {
       // Fill up the gridView with the data that you want
    }
}

答案 1 :(得分:0)

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)

{

}

替换object sender, GridViewUpdateEventArgs e

object sender, GridViewRowEventArgs e

答案 2 :(得分:0)

只需在aspx页面中更改gridview

即可
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound">

然后把

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)

{}