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

时间:2011-07-05 18:31:14

标签: c# asp.net

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

当用户单击delete时,我的代码隐藏将另一个linkbutton的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);
    ...
}

2 个答案:

答案 0 :(得分:4)

是的,第二回发导致问题..

我认为您应删除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;
          }

      }

答案 1 :(得分:3)

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

默认情况下,按钮没有启用视图状态,因此您可以按照预期在回发后使命令参数消失。

编辑:

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