一共有这几个文件:order.cs(商品实体)ordersummary.cs(所有订单的总结)default.aspx(显示商品)newwin.aspx(要打开的文件,显示购买的商品)jsshop.js(提供window.open方法)test.asmx文件(修改保存session)
要的功能是 在default.aspx中点击购买后,通过调用jsshop.js------test.asmx--->jsshop.js(通过他的方法window.open)打开newwin.aspx(并保持开启);同时购买其他商品时,通过window.open打开的newwin.aspx同时更新。代码完成后,可以实现功能。奇怪的是,晚上再打开时newwin.aspx却不能同时更新,调试发现newwin.aspx的后台文件不再执行!
default.aspx
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/jsshop.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="~/test.asmx" />
</Services>
</asp:ScriptManager>
<br />
<asp:GridView ID="GridView1" runat="server" PageSize="5" AllowPaging="True"
onpageindexchanging="GridView1_PageIndexChanging"
AutoGenerateColumns="False"
DataKeyNames="ProductID">
<Columns>
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<input id="btn<%#Eval("ProductID") %>" name='<%#Eval("ProductID") %>' type="button" value="购买" onclick="ordercar(this.name)" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="商品ID">
<ItemTemplate>
<asp:Label ID="lblid" runat="server" Text='<%#Eval("ProductID") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="商品Name">
<ItemTemplate>
<div id="name<%#Eval("ProductID") %>"><%#getsubstring(Eval("ProductName") )%></div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="商品单价">
<ItemTemplate>
<div id="price<%#Eval("ProductID") %>"><%#Eval("Price") %></div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
jsshop.js
///<reference name="MicrosoftAjax.js"/>
function ordercar(id) {
var newid = "name" + id;
var name = $get(newid).innerText;
var newid = "price" + id;
var price = $get(newid).innerText;
var customorder = new order();
customorder.Id = id;
customorder.Name = name;
customorder.Price = price;
customorder.Count = "1";
test.GetOrder(customorder, newwin);
}
function newwin(result) {
var path = "newwin.aspx";
var a = window.open(path, '服务资料', 'toolbar=yes,menubar=yes,status=yes,scrollbars=yes,width=500,height=300,top=70,left=150');
}
function cancel(id) {
alert(id);
test.Delproduct(id,newwin);
}
test.asmx
[ScriptService]
[GenerateScriptType(typeof(order))]
public class test : System.Web.Services.WebService {
public test () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
[WebMethod(EnableSession = true)]
public void GetOrder(order customorder)
{
Session["order"] = customorder;
}
[WebMethod(EnableSession = true)]
public void Delproduct(string id)
{
Session["order"] = "del";
ordersummary newsummary = (ordersummary)Session["summary"];
newsummary.Totalcount = newsummary.Totalcount - ((order)newsummary.Ht[id]).Count;
newsummary.TotalMoney -= ((order)newsummary.Ht[id]).Price * ((order)newsummary.Ht[id]).Count;
newsummary.Ht.Remove(id);
Session["summary"] = newsummary;
}
}
4 个解决方案
#1
function newwin(result) {
var path = "newwin.aspx";
var a = window.open(path, '服务资料', 'toolbar=yes,menubar=yes,status=yes,scrollbars=yes,width=500,height=300,top=70,left=150');
}
"newwin.aspx";后面加个随机数,否则ie认为可以调用缓存。
var path = "newwin.aspx";
var a = window.open(path, '服务资料', 'toolbar=yes,menubar=yes,status=yes,scrollbars=yes,width=500,height=300,top=70,left=150');
}
"newwin.aspx";后面加个随机数,否则ie认为可以调用缓存。
#2
先谢谢您!
var path = "newwin.aspx"+随机数; 这样加吗?
var path = "newwin.aspx"+随机数; 这样加吗?
#3
window.open('','',bool) 第三个参数是不是用来设置缓存的,可是我true 和false 都用了还是不行呢
求高手指教 郁闷了 好几天了
求高手指教 郁闷了 好几天了
#4
加一个随机变量,保持每次请求的URL不同就可以了。
例如:<script type='text/javascript'>window.open('BookIndexNew.aspx?time=" + DateTime.Now +"','MainFrame');</script>
例如:<script type='text/javascript'>window.open('BookIndexNew.aspx?time=" + DateTime.Now +"','MainFrame');</script>
#1
function newwin(result) {
var path = "newwin.aspx";
var a = window.open(path, '服务资料', 'toolbar=yes,menubar=yes,status=yes,scrollbars=yes,width=500,height=300,top=70,left=150');
}
"newwin.aspx";后面加个随机数,否则ie认为可以调用缓存。
var path = "newwin.aspx";
var a = window.open(path, '服务资料', 'toolbar=yes,menubar=yes,status=yes,scrollbars=yes,width=500,height=300,top=70,left=150');
}
"newwin.aspx";后面加个随机数,否则ie认为可以调用缓存。
#2
先谢谢您!
var path = "newwin.aspx"+随机数; 这样加吗?
var path = "newwin.aspx"+随机数; 这样加吗?
#3
window.open('','',bool) 第三个参数是不是用来设置缓存的,可是我true 和false 都用了还是不行呢
求高手指教 郁闷了 好几天了
求高手指教 郁闷了 好几天了
#4
加一个随机变量,保持每次请求的URL不同就可以了。
例如:<script type='text/javascript'>window.open('BookIndexNew.aspx?time=" + DateTime.Now +"','MainFrame');</script>
例如:<script type='text/javascript'>window.open('BookIndexNew.aspx?time=" + DateTime.Now +"','MainFrame');</script>