现在做一个项目,master page用的别人写好的,我们只需要在contentplaceholder里面加自己做的页面。现在我需要在contentplaceholder加一个dropdownlist、button和一个iframe。其中iframe页面包含gridview以及一些Label和一些TextBox实现增删改查。ddl的选项是24个字典表,所以iframe的页面也就是24个。现在我需要实现点击button,iframe动态改变,在网上查了下用js设置iframe的src和后台写代码设置Attibutes["src"]都不行。我在网上找了下也没找到正确的,难道这样不行?
用前台客户端的button去处理吧,直接调用前台JS脚本(onclick)
Code
iframe 需要在客户端进行连接跳转,也就是使用 js 来修改src实现的。
你可以先测试一下是否js的代码是否执行了。一般都不会出现问题的。
使用master page 的話,對象的客戶端ID會改變的
_ctl0_ContentPlaceHolder1_IframeClient
所以JS獲取對象時候看是不是無法獲取正確ID
上来就看到这个问题了,原本我也没做过类似的,所以就写一次,权作自己的练习,代码如下:
Site.Master代码:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="MultipleFileUpload.Site" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
WebForm1.aspx 页面代码
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MultipleFileUpload.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:DropDownList ID="ddl" runat="server">
<asp:ListItem Value="1" Text="1"></asp:ListItem>
<asp:ListItem Value="2" Text="2"></asp:ListItem>
<asp:ListItem Value="3" Text="3"></asp:ListItem>
<asp:ListItem Value="4" Text="4"></asp:ListItem>
<asp:ListItem Value="5" Text="5"></asp:ListItem>
</asp:DropDownList>
<asp:Button ID="SubMit" Text="SubMit" runat="server" OnClientClick="return DynamicIframe();" />
<iframe id="Dynamic" name="Dynamic" width="800" height="600"></iframe>
<script type="text/javascript">
function DynamicIframe() {
var ddl = "<%=ddl.ClientID%>", selValue = "";
ddl = document.getElementById(ddl);
if (ddl) {
for (var i = 0; i < ddl.options.length; i++) {
if (ddl.options[i].selected) {
selValue = ddl.options[i].value;
}
}
}
var di = document.getElementById("Dynamic"), sr = "";
if (selValue != "" && di) {
switch (parseInt(selValue)) {
case 1:
sr = "http://www.xapx.net/";
break;
case 2:
sr = "http://www.xapx.net/CommonFiles/Show.aspx?ExId=66";
break;
case 3:
sr = "http://www.xapx.net/CommonFiles/Show.aspx?ExId=64";
break;
case 4:
sr = "http://www.xapx.net/CommonFiles/Show.aspx?ExId=61";
break;
case 5:
sr = "http://www.xapx.net/CommonFiles/Show.aspx?ExId=62";
break;
default:
sr = "http://www.xapx.net";
break;
}
}
di.src = sr;
return false;
}
window.onload = function() {
DynamicIframe();
}
</script>
</asp:Content>
看看是不是你想要的吧!至于我程序中使用的这个网站链接,是我自己的一个小站,针对每个sr,你可以根据你的程序需求来处理。
引用woody.wu:
使用master page 的話,對象的客戶端ID會改變的
_ctl0_ContentPlaceHolder1_IframeClient
所以JS獲取對象時候看是不是無法獲取正確ID
正解!