如何使用rowdeleting事件删除gridview中的行?
这是我的.cs
代码:
protected void Gridview1_RowDeleting(object sender, GridViewDeleteEventArgs e) { Gridview1.DeleteRow(e.RowIndex); Gridview1.DataBind(); }
这是markup
,
<%-- --%> varchar int numeric uniqueidentifier char Delete
请认真我。 我做了这么多..但仍然没有删除行…
protected void Gridview1_RowDeleting(object sender, GridViewDeleteEventArgs e) { //Gridview1.DeleteRow((int)Gridview1.DataKeys[e.RowIndex].Value); //Gridview1.DeleteRow(e.RowIndex); //Gridview1.DataBind(); foreach(DataRow dr in dt.Rows) { dt.Rows.Remove(dr); dt.Rows[e.RowIndex].Delete(); } Gridview1.DeleteRow(e.RowIndex); // dt = (DataTable)Gridview1.DataSource; Gridview1.DataSource = dt; Gridview1.DataBind(); }
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex]; SqlCommand cmd = new SqlCommand("Delete From userTable (userName,age,birthPLace)"); GridView1.DataBind(); }
确保创建一个静态DataTable对象 ,然后使用以下代码:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { dt.Rows.RemoveAt(e.RowIndex); GridView1.DataSource = dt; GridView1.DataBind(); }
您的删除代码如下所示
Gridview1.DeleteRow(e.RowIndex); Gridview1.DataBind();
当您调用Gridview1.DataBind()时,您将使用当前数据源填充gridview。 因此,它将删除所有存在的行,并将添加CustomersSqlDataSource中的所有行。
您需要做的是从CustomersSqlDataSource查询的表中删除该行。
通过向CustomersSqlDataSource设置delete命令,添加删除参数,然后执行delete命令,可以非常轻松地完成此操作。
CustomersSqlDataSource.DeleteCommand = "DELETE FROM Customer Where CustomerID=@CustomerID"; // Customer is the name of the table where you take your data from. Maybe you named it different CustomersSqlDataSource.DeleteParameters.Add("CustomerID", Gridview1.DataKeys[e.RowIndex].Values["CustomerID"].ToString()); CustomersSqlDataSource.Delete(); Gridview1.DataBind();
但请注意,这将从数据库中删除数据。
最简单的方法是使用ASP中的某些数据源创建GridView,并在Row_Deletinng Event中调用该数据源。 例如,如果您将SqlDataSource1作为GridView数据源,则Row_Deleting事件将为:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { int ID = int.Parse(GridView1.Rows[e.RowIndex].FindControl("ID").toString()); string delete_command = "DELETE FROM your_table WHERE ID = " + ID; SqlDataSource1.DeleteCommand = delete_command; }
请参阅以下代码并进行一些更改以获得问题的答案
<%@ Page Language="C#" %> GridView RowDeleting Example
在网格中使用此代码将ID作为主要元素,以便唯一标识每个ROW
并搜索uique ID使用后面的C#代码中的代码(基本上这是搜索隐藏字段并将其存储在var中)
protected void Grd_Registration_RowDeleting(object sender, GridViewDeleteEventArgs e) { var ID = (HiddenField)Grd_Registration.Rows[e.RowIndex].FindControl("ID"); //Your Delete Logic Goes here having ID to delete GridBind(); }
解决方案有点简单; 一旦从数据网格中删除了该行(您的代码仅从网格中删除行而不是数据源),那么您不需要执行任何其他操作。 当您在不更新数据源之后立即执行数据绑定操作时,您将重新添加从源到gridview控件的所有行(包括从前一语句中的网格中删除的行)。
要简单地从没有数据源的网格中删除,只需在网格上调用删除操作,这就是你需要做的所有事情……之后不需要数据绑定。
试试这个确保你提到的Datakeyname只是设计器文件中的列名(id)
//你的aspx代码
< asp:GridView ID=”dgUsers” runat=”server” AutoGenerateSelectButton=”True” OnDataBound=”dgUsers_DataBound” OnRowDataBound=”dgUsers_RowDataBound” OnSelectedIndexChanged=”dgUsers_SelectedIndexChanged” AutoGenerateDeleteButton=”True” OnRowDeleting=”dgUsers_RowDeleting” DataKeyNames=”id” OnRowCommand=”dgUsers_RowCommand”>
//你的aspx.cs代码
protected void dgUsers_RowDeleting(object sender, GridViewDeleteEventArgs e) { int id = Convert.ToInt32(dgUsers.DataKeys[e.RowIndex].Value); string query = "delete from users where id= '" + id + "'"; //your remaining delete code }
我认为你在做这个链接中提到的重新绑定错误
如何从gridview中删除行?
如果我记得您之前的问题,那么您将绑定到DataTable。 试试这个:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { DataTable sourceData = (DataTable)GridView1.DataSource; sourceData.Rows[e.RowIndex].Delete(); GridVie1.DataSource = sourceData; GridView1.DataBind(); }
基本上,正如我在评论中所说,获取GridView的DataSource副本,从中删除行,然后将DataSource设置为更新的对象并再次调用DataBind()。
这是你想要实现的诀窍。 我也有像你这样的问题。
在RowDeleting事件中很难获得选定的行和数据键但是在SelectedIndexChanged事件中很容易获得选定的行和数据键。 这是一个例子 –
protected void gv_SelectedIndexChanged(object sender, EventArgs e) { int index = gv.SelectedIndex; int vehicleId = Convert.ToInt32(gv.DataKeys[index].Value); SqlConnection con = new SqlConnection("-----"); SqlCommand com = new SqlCommand("DELETE FROM tbl WHERE vId = @vId", con); com.Parameters.AddWithValue("@vId", vehicleId); con.Open(); com.ExecuteNonQuery(); }
在页面加载中添加以下行,
ViewState["GetRecords"] = dt;
试试这个,
protected void DeleteRows(object sender, GridViewDeleteEventArgs e) { dt = ViewState["GetRecords"] as DataTable; dt.Rows.RemoveAt(e.RowIndex); dt.AcceptChanges(); ViewState["GetRecords"] = dt; BindData(); }
如果仍有任何问题,请使用BindData()方法发送代码
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { int index = GridView1.SelectedIndex; int id = Convert.ToInt32(GridView1.DataKeys[index].Value); SqlConnection con = new SqlConnection(str); SqlCommand com = new SqlCommand("spDelete", con); com.Parameters.AddWithValue("@PatientId", id); con.Open(); com.ExecuteNonQuery();
指数超出范围。 必须是非负数且小于集合的大小。 参数名称:index
我知道这是一个迟到的答案,但它仍然可以帮助需要解决方案的人。 我建议使用OnRowCommand进行删除操作以及DataKeyNames,保持OnRowDeleting函数以避免exception。
在gridView中包含DataKeyNames =“ID”,并在链接按钮中指定相同的内容。
Delete protected void Gridview1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Delete") { int ID = Convert.ToInt32(e.CommandArgument); //now perform the delete operation using ID value } } protected void Gridview1_RowDeleting(object sender, GridViewDeleteEventArgs e) { //Leave it blank }
如果这有用,请给我+
上述就是C#学习教程:如何使用rowdeleting事件删除gridview中的行?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { MySqlCommand cmd; string id1 = GridView1.DataKeys[e.RowIndex].Value.ToString(); con.Open(); cmd = new MySqlCommand("delete from tableName where refno='" + id1 + "'", con); cmd.ExecuteNonQuery(); con.Close(); BindView(); } private void BindView() { GridView1.DataSource = ms.dTable("select * from table_name"); GridView1.DataBind(); }
//message box before deletion protected void grdEmployee_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { foreach (DataControlFieldCell cell in e.Row.Cells) { foreach (Control control in cell.Controls) { LinkButton button = control as LinkButton; if (button != null && button.CommandName == "Delete") button.OnClientClick = "if (!confirm('Are you sure " + "you want to delete this record?')) return false;"; } } } } //deletion protected void grdEmployee_RowDeleting(object sender, GridViewDeleteEventArgs e) { conn.Open(); int empid = Convert.ToInt32(((Label)grdEmployee.Rows[e.RowIndex].Cells[0].FindControl("lblIdBind")).Text); SqlCommand cmdDelete = new SqlCommand("Delete from employee_details where id=" + empid, conn); cmdDelete.ExecuteNonQuery(); conn.Close(); grdEmployee_refreshdata(); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1024749.html