关于订单录入的操作:
问题是:我现在要录入一条主记录 + 明细记录(一条或多条),在CS中比较好实现。请问在BS结构中该如何去实现,也就是说页面该如何设计?我目前的想法是,在一个页面中上半页的几排textbox负责主记录的输入,下半页放一个datagrid,也就是说,明细记录(多条)在这个datagrid中录入。但是同事说这样非常不好实现,所以在此请教各位高手有没有哪种更好的实现方法?或者链接?或者源码也可以。在这里谢过了。。
问题是:我现在要录入一条主记录 + 明细记录(一条或多条),在CS中比较好实现。请问在BS结构中该如何去实现,也就是说页面该如何设计?我目前的想法是,在一个页面中上半页的几排textbox负责主记录的输入,下半页放一个datagrid,也就是说,明细记录(多条)在这个datagrid中录入。但是同事说这样非常不好实现,所以在此请教各位高手有没有哪种更好的实现方法?或者链接?或者源码也可以。在这里谢过了。。
a.aspx
textbox1.。。录入信息
产生一个roderid
b.aspx
textbox2.。。明细录入
用上一个产生的roderid生成明细id
呵呵......我也正在设计这个页面,
还请各位大虾出出主意,
帮个忙!!!!
谢谢了!!![/align]
由于从表中存在多行数据,在录入从表数据时,如何能够暂时保存这些数据,而在所有数据输入完成后再和主表一起保存?
1.在从表录入每条数据时,提交到服务器,用Session 保存DataTable,这种方式可以,但总觉得有问题,绝不采取.
因为业务太多,如果每个业都采用这种方式保数据,结果可以想像.
2.在从表录入每条数据时,提交到服务器,用ViewState保存DataTable,这种方式可以,但会降低页面传输速度,
也排除了这种做法.
3.在从表录入每条数据时,使用客户端 javascript 操作从表所用的表格,在页面提交时再用 Request.Form取出表格控
件中的数据,利用transaction 和主表同时提交,但其中有个问题要注意,由于采用javascript操作表格(HTML TABLE非数据
库的TABLE),页面在提交时必须先将表格中的数据记录下来,否则,呵呵,你就得再重输入一次数据.
这种方式我在个别界面中使作了,比如会计凭证,因为它在保存时需检查一些条件,而这些条件又必须和从表数据相关.
但是这种方式就是代码量大,如果实在没有其他办法,也是一种选择.
4.先将主表保存,自动产生单据编号后,再让从表的DataGrid出现,然后输入一条从表数据,保存从表一次,直到全部从表的数据
输入完成,这种方式虽笨,但是代码量少,简单,可控性强.但不适合那种需要在输入完成后进行检查的单据(如会计凭证),
因为没有其他的好方法,目前系统多数界面都是采用此方式,比起那些只做内容服务的开发商来说,做类似"进销存"或者ERP
项目的使用ASP.NET实在太烦心了,以前用C/S时根本就不存在这些问题,数据表格本身就是一个持久层.
我以前的做法是。上面的一半录入主体信息。
下面一关。默认是一行。可以增加行。
在简码的输入部分,输入几个字符自动显示商品列表(如google的搜索框提示)
http://topic.csdn.net/u/20090311/23/a593a290-83ee-40f1-b747-bf749cb7611c.html简码的输入框,那一块,可以用ajax填充一个图层。
如果ajax用jquery的话。思路应该可以这样: $(document).ready(function() { //显示选择商品的层,
//t1为下半页的表格id
//SelectDIV的这个图层的ID
//TxtPy 为简码输入框的ID,注意你的简码输入框应该是有多个的.
$("#t1 input").bind("focus mousemove mouseout", function(e) {
var id = $(this).attr("id");
if (id == 'TxtPy') {
var topVal = ($(this).offset().top + 24) + "px";
var leftVal = $(this).offset().left + "px";
$('#SelectDIV').css({ left: leftVal, top: topVal }).fadeIn('slow'); //显示选择商品的图层
} else if (id !== "SelectDIV") {
$('#SelectDIV').fadeOut('normal');
}
});
}); //当点击图层中的商品名(或者表格行时)时,用AJAX取数据,填充一下本行的其它文本框值,如单价等;
//简码输入框内容改变检测
$("#t1 input").bind("keyup cut drop change", function(e) {
var id = $(this).attr("id");
if (id == 'TxtPy ') {
if ($(this).val() != "") {
.... //执行填充选择商品图层数据的方法
}
} });