我正在尝试从网格视图中删除记录,但无法删除

本文关键字:删除 记录 视图 网格 | 更新日期: 2023-09-27 18:36:08

>我正在尝试从网格视图中删除记录,但无法删除。使用模板字段中的链接按钮从网格视图中删除记录时出现这样的错误。

    var id = GvTestimony.DataKeys[gvRow.RowIndex].Value.ToString();

错误消息在这里:

指数超出范围。必须是非负数且小于集合的大小。
参数名称:索引

void TestimoniesGrid()
{
    using (var sqlConnection = new SqlConnection(_conn))
    {
        using (var sqlCommand = new SqlCommand("SP_TestimoniesGridData", sqlConnection))
        {
            sqlCommand.CommandType = CommandType.StoredProcedure;
            using (var sqlDataAdapter = new SqlDataAdapter(sqlCommand))
            {
                var dataTable = new DataTable();
                sqlDataAdapter.Fill(dataTable);
                if (dataTable.Rows.Count == 0)
                {
                    GvTestimony.EmptyDataText = "This table has no data.";
                }
                else
                {
                    GvTestimony.DataSource = dataTable;
                    GvTestimony.DataBind();
                }
            }
        }
    }
}
protected void lnkReject_OnClick(object sender, EventArgs e)
{
    var linkButton = sender as LinkButton;
    if (linkButton != null)
    {
        var gvRow = linkButton.NamingContainer as GridViewRow;
        var id = GvTestimony.DataKeys[gvRow.RowIndex].Value.ToString();
        using (var sqlConnection = new SqlConnection(_conn))
        {
            using (var sqlCommand = new SqlCommand("SP_DeleteTestimonyById", sqlConnection))
            {
                sqlCommand.CommandType = CommandType.StoredProcedure;
                sqlCommand.Parameters.AddWithValue("@OwnStoryId", id);
                sqlConnection.Open();
                var result = sqlCommand.ExecuteNonQuery();
                sqlConnection.Close();
                if (result == 1)
                {
                    TestimoniesGrid();
                }
            }
        }
    }
}

我正在尝试从网格视图中删除记录,但无法删除

(对不起,这是我的第一个答案)看看你如何定义网格列,以及你使用的是哪个版本的.NET,可能会很有趣。

在这里,您可以找到一个带有按钮的示例:

http://weblogs.asp.net/gurusarkar/get-gridview-rowindex-upon-button-click

我将复制最重要的部分,您可以通过两种不同的方式进行:

  • 获取 RowCommand 事件上的网格视图行和网格视图行索引

    protected void OnRowCommand(object sender, GridViewCommandEventArgs e) { int index = Convert.ToInt32(e.CommandArgument); GridViewRow gvRow = GridView1.Rows[index]; }

  • 获取网格视图行
  • 和网格视图行索引在模板字段中按钮的单击事件

    protected void Button1_Click(object sender, EventArgs e) { GridViewRow gvRow = (GridViewRow)(sender as Control).Parent.Parent; int index = gvRow.RowIndex; }

如果您需要更多信息,请告诉我。

更多示例:

http://www.c-sharpcorner.com/UploadFile/d551d3/how-to-load-partial-views-in-Asp-Net-mvc-using-jquery-ajax/