首页 > 解决方案 > 哪个先开火?ASP SQLDataSource 或 C# 查询字符串?

问题描述

我有一个 GridView,用户单击删除按钮。当按下该删除按钮时,它会附加到 ASP 页面本身的 SQL 数据源。这样做可以减轻必须选择行然后删除的情况。

我在 GridView 中也有一个

OnRowDeleting="GridView1_RowDeleting"

称呼。这个方法在后面的代码中比较简单。ASP SQL 数据源使用 CASE WHEN 检查表中的值,并执行更新或不更新。

之后我意识到 OnRowDeleting 总是会在 GridView 控件实际删除它之前发生。当 SQL 数据源不触发执行时,它可以正常工作。(我不希望它基于 CASE WHEN 子句)然后 OnRowDeleting 方法触发并调用我拥有的 Javascript 调用 .. 看起来像这样。

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {   
        ClientScript.RegisterStartupScript(GetType(), "hwa", "Ealert();", true);   
    }

当 SQL 数据源按预期正确执行时,问题就出现了,OnRowDeleting (GridView1_RowDeleting) 仍然触发。

有没有办法仅在 SQL 数据源未执行时触发该 Javascript?

标签: c#asp.netgridview

解决方案


我不确定我是否问对了问题。不过,没关系。我找到了我正在寻找的答案。基本上,我需要一种方法来访问 GridView 中的某个单元格而不选择它。在 GridView 中按下删除按钮时,它会调用我设置的 OnRowDeleting 方法。从那里我选择并比较它的值,如下所示:

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        TableCell cell = GridView1.Rows[e.RowIndex].Cells[12];
        if(cell.Text == "Yes")
        {
            //Do Nothing
        }
        else
        {
            ClientScript.RegisterStartupScript(GetType(), "hwa", "Ealert();", true);
            e.Cancel = true;
        }


    }

我没有意识到我可以以这种方式访问​​牢房。我最初的问题可能没有意义并且似乎不适用,但我问它认为我必须对背后的代码运行 SQL 查询,而不是使用 ASP SQL 数据源。这样做可以解决所有问题。


推荐阅读