我想PostBack
Page
手动,但不知何故其不工作。我不知道我在这里做错了什么。我正在使用Jquery对话框并在发回页面之前放置确认框。这是我的代码。手动回发不能在asp.net工作
HTML
<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
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
应该回发到服务器和控件ID名称应该会出现。但在我的情况下,它总是显示'首次装入'。这意味着页面不会将其识别为回传。我想提高服务器端CheckBox_changed
事件。
请帮忙。
http://stackoverflow.com/questions/13475428/asp-net-manual-postback-not-working-from-dynamically-created-linkbutton – 2013-03-05 12:08:35
不应该做的__doPostBack调用是__doPostBack(checkbox.id, '的JavaScript'); ? – jbl 2013-03-05 12:19:56
查看我的编辑。我声明变量为'isCollectedCheckBox' – 2013-03-05 12:26:27