在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 %>', "");
});
答案 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"];