![](/img/trans.png)
[英]AngularJS ng-grid does not work after PostBack in ASP.NET page
[英]manual postback does not work in asp.net
我正在尝试手动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>
var isCollectedCheckBox = $('.isCollectedCheckBox input[type=checkbox]');
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
$(isCollectedCheckBox).on("change", function () {
var checked = this.checked;
var checkbox = this;
if (checked) {
checkbox.checked = true;
__doPostBack(checkbox, 'JavaScript');
}
});
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设置为服务器端事件方法的名称。 如果要获取发送点击的控件,那就是发送者的目的。 例:
<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()
}
当然,这似乎是多余的,因为为什么“是”按钮仅具有自己的事件处理程序,而“否”按钮是返回false的客户端按钮?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.