我正在通过javascript调用部分回发:
function GetPolicyClick()
{"__dopostback('UpdatePanel1', 'PostCall')";}
它是我需要它的1/2。它 调用部分回发,仅适用于我的UpdatePanel。
现在是棘手的部分。我正在尝试(以某种方式)在我的代码中引用__dopostback的第二个参数。 此不起作用:
Private Sub UpdatePanel1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles UpdatePanel1.Load
Dim MyArg As String = Request("__EVENTARGUMENT")
End Sub
我只是得到一个空字符串。
当然,我正在尝试做的事情可能完全错误(就像我尝试用ASP做的其他事情一样)。我怀疑我的代码隐藏是从页面而不是面板中抓取事件参数,但我真的不知道,有什么想法吗?
答案 0 :(得分:11)
如果您想在 _ EVENTARGUMENT 中添加一些值,则应在使用 _doPostBack('UpdatePanel1','')因为__EVENTTARGET是隐藏字段,在你的html文档中它看起来像这样:
<input type="hidden" value="" id="__EVENTARGUMENT" name="__EVENTARGUMENT">
我建议你做这样的事情:
function setArgAndPostBack() {
var arg = document.getElementById('__EVENTARGUMENT');
var arg = document.getElementById("__EVENTARGUMENT");
arg.value = 'something you want to put to server';
__doPostBack('UpdatePanel1', '');
}
如果使用jQuery,它会更短:
function setArgAndPostBack() {
$("#__EVENTARGUMENT").val('something you want to put to server');
__doPostBack('UpdatePanel1', '');
}
如果它不起作用,我建议你在Update面板中放一个隐藏字段:
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<asp:HiddenField ID="hdnData" value="" runat="server" />
<!-- your content goes here -->
</ContentTemplate>
</asp:UpdatePanel>
然后像上面那样做同样的工作:
function setArgAndPostBack() {
//Here hidden field is filled with your data
$("#<%=hdnData.ClientID%>").val('something you want to put to server');
__doPostBack('UpdatePanel1', '');
}
在第一个场景中,您可以在服务器端获得__EVENTARGUMENT:
String args = Request["__EVENTARGUMENT"];
如果第一种情况不起作用,您可以使用类似的内容:
String args = hdnData.Value;//This works even in Page_Load function.