c#和ASP -设置命令参数,然后命令参数消失

本文关键字:命令 参数 然后 消失 设置 ASP | 更新日期: 2023-09-27 18:01:29

我试图使用gridview命令删除gridview中的条目(以及来自数据上下文),但我想要求用户首先确认或不确认。我有一个单独的链接按钮,使用用户单击删除按钮所在行的项目ID执行删除代码。

当用户单击delete时,我的codebehind将另一个链接按钮的CommandArgument属性设置为它传递的命令参数。但是当用户去确认删除时,突然确认链接的命令是一个空字符串?在第一次回发后是否刷新属性?

下面是我的代码:

ASPX

<asp:LinkButton ID="lbDelete" runat="server" Text="Delete" CommandName="delete" CommandArgument='<%# Eval("TheId") %>' /> //Delete LinkButton
<asp:LinkButton ID="confirmDelete" runat="server" OnClick="confirmDelete_Click" Text="Delete" /> //Confirmation Button
c#

rowCommandFunction(object sender, GridViewCommandEventArgs e)
{
     // blah blah blah
     ...
     confirmDelete.CommandArgument = e.CommandArgument.ToString();
     ...// I've put a breakpoint here, and it is setting the value properly...
}
confirmDelete_Click(object sender, EventArgs e)
{
    //...but when this line tries to run, comfirmDelete.CommandArgument is set to an empty string?
    int selectedId = int.Parse(confirmDelete.CommandArgument);
    ...
}

c#和ASP -设置命令参数,然后命令参数消失

是的,第二次回发导致问题…

我认为你应该删除confirmDelete按钮,而不是从lbDelete调用一个javascript函数,并从那里显示一个确认框。然后在命令事件中执行删除操作。

见下面的代码,

Aspx部分,

     <asp:LinkButton ID="lbDelete" runat="server" Text="Delete" CommandName="delete" CommandArgument='<%# Eval("TheId") %>' OnClientClick="return ConfirmDelete()"/>

JavaScript部分,

      function ConfirmDelete()
      {
         if(confirm("Are you sure to delete?"))
         {
             return true;
          }
           else
          {
            return false;
          }
      }

您必须在按钮中启用EnableViewState="True"的视图状态。

默认情况下,按钮没有启用视图状态,所以您得到的命令参数在回发后消失,如您所料。

编辑:

为什么不将CommandName设置为第二个按钮并在RowCommand函数中处理它?