手动回发在asp.net中不起作用
本文关键字:net 不起作用 asp | 更新日期: 2023-09-27 18:02:12
我正试图手动PostBack
Page
,但不知何故它不工作。我不确定我做错了什么。我使用Jquery对话框,并把确认框张贴回页面之前。这是我的代码。
<form id="form1" runat="server">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<asp:CheckBox ID="cbIsCollected" runat="server" AutoPostBack="false" Checked='<%# MWClickAndCollectHelper.CheckOrderCollectedStatus(AlwaysConvert.ToInt(Eval("OrderId"))) %>'
OnCheckedChanged="cbIsCollected_CheckedChanged" CssClass="isCollectedCheckBox" />
</form>
<标题> JAVASCRIPT h1> 台代码protected void Page_Load(object sender, EventArgs e)
{
ClientScript.GetPostBackEventReference(this, string.Empty);
string targetCtrl = Page.Request.Params.Get("__EVENTTARGET");
postbackId.Text = targetCtrl ?? "First Time Loaded";
if (!Page.IsPostBack)
{
BindGridView(gvOrders, CNCOrderCollection);
}
}
所以当我Check
的CheckBox
,它应该回发到服务器和ControlID的名称应该出现。但在我的情况下,它总是显示"第一次加载"。这意味着页面不会将其识别为回发。我想触发服务器端CheckBox_changed
事件。
请帮。
标题>标题>为什么要"手动"回发?复选框控件具有回发处理程序。将AutoPostBack设置为true,并将OnCheckedChanged设置为服务器端事件方法的名称。如果你想获得发送点击的控件,那就是sender的作用。例子:
<asp:CheckBox ID="cbIsCollected" runat="server" AutoPostBack="Trye"
OnCheckedChanged="cbIsCollected_CheckedChanged" CssClass="isCollectedCheckBox" />
Protected Sub cbIsCollected_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
dim cbSender as checkbox
cbSender = ctype(sender, checkbox)
end Sub
如果这段代码没有达到你想要的效果,请告诉我。
编辑:如果你想从JS回发,你有两个选择。首先,可以像这样调用_doPostback:
function someFunction()
{
__doPostBack('btnName','');
}
其中btnName是页面上按钮的名称。
第二,你可以在你的页面上有一个隐藏的按钮,但是有一个与它相关联的事件处理程序。你的客户端按钮点击调用调用作为JS函数,为你点击服务器按钮:像这样:
function clickButton() {
var getBtn = document.getElementById('<%= btnName.ClientId %>')
getBtn.click()
}
当然,这似乎是多余的,因为为什么Yes按钮没有自己的事件处理程序,而No按钮是返回false的客户端按钮?