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

Jor*_*man 0 c# asp.net

我正在尝试使用gridview命令删除gridview中的条目(以及从datacontext中删除),但是我想先要求用户确认还是不确认。我有一个单独的linkbutton,使用用户单击删除按钮所在行中的项目ID来执行删除代码。

当用户单击删除时,我的代码隐藏将另一个链接按钮的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
Run Code Online (Sandbox Code Playgroud)

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);
    ...
}
Run Code Online (Sandbox Code Playgroud)

Har*_*run 5

是的,第二次回发会导致此问题。

我认为您应该删除ConfirmDelete按钮,而是从lbDelete调用javascript函数并从此处显示确认框。然后在命令事件内执行删除操作。

参见下面的代码,

Aspx部分,

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

JavaScript部分,

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

      }
Run Code Online (Sandbox Code Playgroud)