updatepanel不刷新
admin 发表于 2010-11-17 | 来源:互联网 | 阅读:
我想在后台手动刷新updatepanel 但是无目的. 求教是怎么回事
- JScript code
-
<script language="javascript" type="text/javascript"> function couponTypeChanged() { xmlHttp = GetXmlHttpObject(); var url = "Default.aspx?type=couponTypeChanged"; xmlHttp.open("GET", url, true); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4) { if (xmlHttp.responseText == "success") { $("#cph_btnHideTypeChanged").click(); } } } xmlHttp.setRequestHeader("If-Modified-Since", "0"); xmlHttp.send(null); } </script>
- HTML code
-
<table width="50%" border="0" cellpadding="0" cellspacing="0" class="data-table-3" align="center"> <%--优惠券发送部分 --%> <tr> <td class="v14-header-3" colspan="2"> 123 </td> </tr> <tr> <td width="100px" align="center"> 主类型: </td> <td> <asp:DropDownList runat="server" ID="ddlCouponType" Width="150px" onchange="couponTypeChanged()"> <asp:ListItem Text="代金" Value="LOC"></asp:ListItem> <asp:ListItem Text="实物" Value="GOODS"></asp:ListItem> </asp:DropDownList> </td> </tr> <tr> <td width="100px" align="center"> 具体分类: </td> <td> <asp:UpdatePanel runat="server" ID="UP3" UpdateMode="Conditional" ChildrenAsTriggers="false"> <ContentTemplate> <asp:DropDownList runat="server" ID="ddlCTD" Width="150px"> <asp:ListItem Text="--请选择主类型--" Value="0"></asp:ListItem> </asp:DropDownList> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="btnHideTypeChanged" EventName="Click" /> </Triggers> </asp:UpdatePanel> </td> </tr> <tr id="trCouponTips" style="display: none"> <td colspan="2" align="center"> 处理中,请稍候…… </td> </tr> </table> <asp:Button runat="server" ID="btnHideTypeChanged" OnClick="btnHideTypeChanged_Click" Style="display: none" />
- C# code
-
protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["type"] == "couponTypeChanged") { couponTypeReload(); } } protected void btnHideTypeChanged_Click(object sender, EventArgs e) { UP3.Update(); //ScriptManager.RegisterClientScriptBlock(UP3, GetType(), "123", "alert('click')", true); } private void couponTypeReload() { try { ddlCTD.Items.Clear(); for (int i = 0; i < 3; i++) { ddlCTD.Items.Add(i.ToString()); } Response.Write("success"); } catch (Exception ex) { Response.Write(ex.Message.Replace("\r\n", "").Replace("'", "")); } finally { Response.End(); } }
很惆怅啊 这到底是为什么呢

我觉得 最简单地办法就是在页面上加一个隐藏地 按钮 然后调用 点击事件
原因很简单,你要在另外地一个单独页面上面操作C# code
private void couponTypeReload()
{
try
{
ddlCTD.Items.Clear();
for (int i = 0; i < 3; i++)
{
ddlCTD.Items.Add(i.ToString());
}
Response.Write("success");
}
catch (Exception ex) { Response.Write(ex.Message.Replace("\r\n", "").Replace("’", "")); }
finally { Response.End(); }
}
你地这个最后Response.End地,所有地操作都是无意义地。
HTML code
<table width="50%" border="0" cellpadding="0" cellspacing="0" class="data-table-3"
align="center">
<tr>
<td class="v14-header-3" colspan="2">
123 </td>
</tr>
<tr>
<td width="100px" align="center">
主类型:
</td>
<td>
<asp:DropDownList runat="server" ID="ddlCouponType" Width="150px" onchange="couponTypeChanged()">
<asp:ListItem Text="代金" Value="LOC"></asp:ListItem>
<asp:ListItem Text="实物" Value="GOODS"></asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td width="100px" align="center">
具体分类:
</td>
<td>
<asp:UpdatePanel runat="server" ID="UP3" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>
<asp:DropDownList runat="server" ID="ddlCTD" Width="150px">
<asp:ListItem Text="–请选择主类型–" Value="0"></asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
<tr id="trCouponTips" style="display: none">
<td colspan="2" align="center">
处理中,请稍候……
</td>
</tr>
</table>
<asp:LinkButton ID="Link" runat="server" OnClick="ChangeValue"></asp:LinkButton>
<input id="Button1" type="button" value="button" onclick="__doPostBack(‘Link’,'hello,world’)"/>
C# code
protected void ChangeValue(object sender, EventArgs e)
{
Response.Write(Request.Form["__EVENTARGUMENT"].ToString());
}
这种方式可以通过js调用后台方法
回去试试 我说怎么有一个页面地就好用 原来是在其他页面处理地. 非常感谢
解决了 ……接分