我在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>
答案 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)
{}