如何在代码隐藏方法中访问asp.net按钮的“文本”?

时间:2013-05-02 09:35:52

标签: c# javascript gridview webforms postback

deleting record when it shouldn't

中提及我的问题

如何在代码隐藏方法中访问asp.net按钮的“文本”?

以下是按钮的外观:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
    <ContentTemplate>
    <asp:Button ID="HiddenButton" Text="" runat="server" OnClick="Deleting_Click" /> 

这是我背后的代码:

protected void Deleting_Click(object sender, EventArgs e)
        {

我已经尝试过了:

 HiddenButton.Text = Request.Form["HiddenButton"].ToString();

Request["__EVENTARGUMENT"];

但没有任何效果,有人能告诉我正确的方向吗?

修改

我可以用任何方式吗?但不确定:

 $(document).ready(function () {
       var prm = Sys.WebForms.PageRequestManager.getInstance();    
       prm.add_initializeRequest(InitializeRequest);
       prm.add_endRequest(EndRequest);

    });    

更新

实际发生的是,当用户点击GridView中的删除链接按钮时,会发生这种情况,

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        LinkButton link = e.Row.Cells[4].Controls[2] as LinkButton;

        if(link.Text == "Delete")
            link.OnClientClick = "return ConfirmationBox("+ ((DataRowView)e.Row.DataItem)["userID"].ToString() +")";
    }
}

现在在JS中我正在捕捉动作显示一个消息框并且总是返回false,但是我正在设置隐藏按钮的文本,以便我可以将其发送到代码后面的方法,以便使用UserID删除记录

   function ConfirmationBox(userID) 
    {     
        var elem = document.getElementById('<%= HiddenButton.ClientID %>');
        elem.value = userID;

        $.blockUI({ message: $('#question'), css: { width: '275px' } 
        });

        return false;
    }

现在我获得了我需要的ID,可以让用户选择是或否,如果用户点击是,则会发生这种情况,

$('#yes').click(function() { 
            $.unblockUI(); 

          //  $('<%= HiddenButton.ClientID %>').trigger('click');
          __doPostBack('<%=HiddenButton.ClientID %>', "");
        });

1 个答案:

答案 0 :(得分:2)

您可以将sender转换为按钮并从中获取信息。

protected void Deleting_Click(object sender, EventArgs e)
{
    Button btn = (Button) sender;
    var text = btn.Text;
}

<强>更新

选择(Cast)object vs object as object时,请参阅Direct casting vs 'as' operator?

更新2

当您想将一些参数传递给通过JavaScript设置的代码时,可以使用EVENTARGUMENT

传递它们

所以在致电__doPostBack('','');时你可以在这里设置它。在您的情况下,您需要更新您的代码;

__doPostBack('<%=HiddenButton.ClientID %>', 'Your Argument Here');

然后在你的Deleting_Click方法中,你可以获得参数;

string parameter = Request["__EVENTARGUMENT"];