我有网络用户控件,我正在使用updatepanel。在updatepanel里面有listbox控件,我正在使用客户端脚本在其中添加日期。
我在回发时收到无效的回发错误(当我点击保存按钮时)。在页面预渲染之前抛出错误。
_endPostBack: function PageRequestManager$_endPostBack(error, executor, data) {
if (this._request === executor.get_webRequest()) {
this._processingRequest = false;
this._additionalInput = null;
this._request = null;
}
var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
Sys.Observer.raiseEvent(this, "endRequest", eventArgs);
if (error && !eventArgs.get_errorHandled()) {
throw error;
}
},
以下是在列表框控件中添加值的脚本。
function checkValue(el) {thrown
var txt = $("span[id$=spVisitDates] input[type=text]");
var svc = $(txt).val()
var lst = $('#lstVisitDates');
var options = $('#lstVisitDates option');
var alreadyExist = false;
$(options).each(function () {
if ($(this).val() == svc) {
alert("Item alread exists");
alreadyExist = true;
return;
}
});
if (!alreadyExist)
$(lst).find("option").attr("selected", false);
$(lst).append('<option value="' + svc + '" selected="selected">' + svc + '</option>');
$("#lstVisitDates").html($("#lstVisitDates option").sort(function (a, b) {
return parseDMY($(a).val()) < parseDMY($(b).val()) ? -1 : 1;
}));
}
列表框控件;
<asp:ListBox runat="server" ID="lstVisitDates" Width="220px"
ClientIDMode="Static" SelectionMode="Multiple"></asp:ListBox>
我尝试了以下子项但没有成功;
Protected Overrides Sub Render(writer As HtmlTextWriter)
For Each item As ListItem In lstVisitDates.Items
Page.ClientScript.RegisterForEventValidation(lstVisitDates.UniqueID, item.Value)
Next
MyBase.Render(writer)
End Sub
我认为网页不了解列表框值,这就是它抛出错误消息的原因。
ADDED
我已设法以逗号分隔格式保存隐藏字段中的列表框值,并清空按钮上的列表框保存点击事件并在回发后将值重新添加回列表。
我不知道这是否是最佳方式。还有其他办法吗?