我先说下我的需求:
一个单据编辑页面,分为表头和明细GridView(GridView显示该单据下的产品);点【新增】弹出产品新增页面,选择产品并添加多个材料后返回到单据页面,将得到的数据添加到DataTable并无刷新显示明细到GridView。
我现在的做法:
页面中private static定义DataTable,将DataTable绑定到UpdatePanel中的GridView,选择产品后将得到的数据保存到Session,返回页面后前端通过PageMethods调用后端函数,函数中将Session中的数据再更新到DataTable,再回调前端的代码重新绑定GridView进行刷新,现在功能上能够实现,但是有个重大问题就是:A、B用户同时登陆,A添加产品一后,B添加产品二,A再添加后刷新就有3个。
请大家指教是哪个地方出了问题(我怀疑是private static的问题,但如果不是静态类在WebMethod函数中就无法引用),要怎么解决呢,万分感谢!!!AJAXGridViewJS调用后台
一个单据编辑页面,分为表头和明细GridView(GridView显示该单据下的产品);点【新增】弹出产品新增页面,选择产品并添加多个材料后返回到单据页面,将得到的数据添加到DataTable并无刷新显示明细到GridView。
我现在的做法:
页面中private static定义DataTable,将DataTable绑定到UpdatePanel中的GridView,选择产品后将得到的数据保存到Session,返回页面后前端通过PageMethods调用后端函数,函数中将Session中的数据再更新到DataTable,再回调前端的代码重新绑定GridView进行刷新,现在功能上能够实现,但是有个重大问题就是:A、B用户同时登陆,A添加产品一后,B添加产品二,A再添加后刷新就有3个。
请大家指教是哪个地方出了问题(我怀疑是private static的问题,但如果不是静态类在WebMethod函数中就无法引用),要怎么解决呢,万分感谢!!!AJAXGridViewJS调用后台
解决方案 »
- asp.net初学者求推荐书籍??
- VS2005中用建立的网站,如果后台自动运行?
- StreamWriter 写入问题
- 请问B3-CC-5C-51-A4-06-E4-7C-C6-BC-F7-CB-BE-0B-F6-0C这样的加密是怎样实现的呢?
- 在QQ上的威胁记录能否作为法律证据(系统做的不稳定,难道就要程序员赔吗,哪来的公理?)
- 急:TextBox绑定后为什么不能修改它的值?
- 动态生成aspx,可以么?
- SqlDataAdapter.Fill的问题!!!
- 二进制读取图片无法正常显示
- 这个问题应如何解决?
- 求一套商城的模板.大家帮帮忙
- MVC刚刚学了一下,这个Button在cshtml里怎么调用?现在想加上CSS样式。
非要使用static,应该做成字典,为每个用户id保存一个DataTable。
放在Session中效率怎么样呢。另外有没有前台直接调用后台函数的方法,WebMethod中不能操作页面控件。
在UpdatePanel里放一个隐藏的Button,需要回调后台时,触发这个按钮的click事件就可以。例如:<asp:UpdatePanel >
<ContentTemplate>
<asp:Button runat="server" ID="btn1" OnClick="CallBackEndMethod" style="display:none" />
</ContentTemplate>
</asp:UpdatePanel>protected void CallBackEndMethod(object sender, EventArgs e)
{
。
}
然后可以用js来触发调用:
getElementById('btn1').click();
按钮处理程序不返回任何结果,但是它对其它控件的修改都会反映到前台中,比方对textbox重新赋值,重新绑定gridview,更新hiddenfield值等,只要这些控件在UpdatePanel范围内。可以把这种方式看成是普通的postback回调(虽然它是用ajax技术实现的),它会首先执行Page_Load事件,然后再是button_click事件,从编程角度看跟普通回调没什么两样,只是页面刷新范围限制在UpdatePanel中。这种方式和直接用ajax回调的最大区别就是它是把ViewState值一起post回来,这样在后台就可以完整还原页面状态,得到xxxPage这个对象,你就可以访问其中的实例成员了。所以UpdatePanel方式和直接ajax理念上有很大区别。UpdatePanel是重度封装的、重量级相对比较大(需要传递viewstate和执行一系列page生命周期)。而ajax是轻量级的,但是它当然不能访问在page生命周期内生成的任何实例。