我只是尝试从触发器onchange事件更新自定义控件(包含转发器),该事件触发了一些javascript。
所以dropdownlist和updatepanel就是这样: -
<asp:UpdatePanel runat="server" ID="pnlPanelStageBandLetterTemplate" Visible="false" UpdateMode="Conditional">
<ContentTemplate>
<asp:DropDownList runat="server" ID="ddlBand">
<asp:ListItem Selected="True" Text="1" Value="1" />
<asp:ListItem Text="2" Value="2" />
<asp:ListItem Text="3" Value="3" />
<asp:ListItem Text="4" Value="4" />
<asp:ListItem Text="5" Value="5" />
<asp:ListItem Text="6" Value="6" />
</asp:DropDownList>
<panelStageLetters:PanelStageBandLetterTemplate id="psbltPanelStageBandLetterTemplate" runat="server">
</panelStageLetters:PanelStageBandLetterTemplate>
</ContentTemplate>
使用以下内容呈现下拉列表ddlband: -
ddlBand.Attributes.Add("onchange", "changeCutBand('" + pnlPanelStageBandLetterTemplate.ClientID + "')");
ddlBand.ID = "ddlBand";
选择下拉列表时,会触发以下代码: -
function changeCutBand(panelID) {
var cbc = ($(".cutBandChanger")[0]);
val = cbc.value;
var wsid = getQueryVariable('wsid');
if (val != "0") {
$.get("changecutband.ajax?action=changecutband&newcutmethod=" + val + "&wsid=" + wsid);
var panelID = document.getElementById('ctl00_ContentPane_ctl01_pnlPanelStageBandLetterTemplate');
var ddID = document.getElementById('ctl00_ContentPane_ctl01_ddlBand');
__doPostBack(panelID, val);
}
}
这会调用一些执行数据库更新的ajax,数据从该数据库更新提供自定义控件中保存的转发器的源。
我的问题是数据库正在更新,但更新面板没有刷新。我得到的是一个javascript错误,说'document.getelementbyid&lt;'...'&gt;为null或不是具有数百万的非常大的行号的对象。
答案 0 :(得分:0)
我在你的javascript代码中发现了一些问题:
document.getElementById('ctl00_ContentPane_ctl01_pnlPanelStageBandLetterTemplate')
返回 HTML元素,不是字符串(请参阅参考:getElementById)__doPostBack
需要两个字符串参数,但您要传递一个HTML元素作为第一个<%: pnlPanelStageBandLetterTemplate.ClientID %>
'<%: pnlPanelStageBandLetterTemplate.UniqueID %>'
作为__doPostBack
的第一个参数(不要忘记撇号,因为你想传递一个字符串)要查看有效的回发调用ASP.NET如何生成它,请将其放在页面上的某个位置:
<%: ClientScript.GetPostBackEventReference(pnlPanelStageBandLetterTemplate, "arg") %>
它应该在您的页面上呈现这样的内容:
__doPostBack('ctl00$ContentPane$ctl01$pnlPanelStageBandLetterTemplate','arg')
这可能就是你要找的东西(硬编码的第二个参数除外)。
尝试解决这些问题,让我们知道你得到了多远。
干杯,奥利弗