当前位置:编程学习 > C#/ASP.NET >>

过年了,问大家一个问题,有实际产品经验的肯定知道

C/S
gridview列表查出来的数据
第一步:AB两个不同客户端在先后此界面通过库打开列表
同时进行修改
A用户修改了表数据;进行了提交;
B用户看到的是A提交前的数据;(而不知道此时看到的数据已经是修改后的数据了)当B点击提交的时候,如何去判断告诉B说(其实你现在看到的数据已经被别人修改过了)

排除方法:
一:进行比较;可做,但是不科学;
二:通过监听该表的数据,做到A如果改了数据,B用户界面会监听接受到,告诉B说你在看的数据已经修改了;相当于推送广告性质;这样会出现N多人不断同时修改界面,其他人会被不断的接受信息而进行刷新;可做,但也不科学;

据说.net中有个像PB一个一样的函数;可以点击提交的时候,调用这个函数,就可以告诉B你看到的数据已经被改过了;这种主动去判断的功能;

求此函数名以及使用方法
         --------------------编程问答-------------------- http://blog.csdn.net/zw_2011/article/details/6329041

DataRow的RowState属性 --------------------编程问答-------------------- 这个问题不觉得复杂啊,编个号不就行了?最开始取数据的时候带着编号,提交的时候也带着编号,更新编号递增。
--------------------编程问答-------------------- c/s结构,你可以用remoting,服务端定义通知事件,客户端响应此事件,一旦某用户修改了数据提交给服务端后,服务端触发这个事件,所有客户端事件会自动响应 --------------------编程问答--------------------  dt2 = dtgd2.GetChanges(DataRowState.Modified);
dt3 = dtgd2.GetChanges(DataRowState.Added);
楼上你说的是这个吧
dtgd2是A和B在修改前库中读出来的数据,
(前提是已经读出来了)
而用于判断当前列表有多少条记录是修改过了,多少条记录是新加的而进行操作;

跟这个dtgd2去跟库里面的数据比较,是两个不同的性质和概念;

难道入库的时候再查询一下dtgd2,看跟刚才读出来的dtgd2是否一样,这样已经涉及到重新读库比较 了
就是题目中的说的第一种情况
--------------------编程问答-------------------- 编号,版本控制,签入签出。。。 --------------------编程问答-------------------- 楼上的remoting自动响应的话的功能相当于是第二种,在数据库中做上表的甚至字段的监听。别的客户端也能自动响应接受到;
但是要的不是自动响应的效果。要的是B去点击的(时间点由B确定)的;而不是要自动去接受 --------------------编程问答-------------------- 2楼:纯属修改统一条数据,编号也一致;如果要判断编号,也会涉及到要去读库,要判断;
据说有个不需要读库的一个要命的函数,一调用就能直接知道是否库里被改过了。
调用的话,那多灵活啊 --------------------编程问答-------------------- 明白你的意思了。

有两个办法,一个是客户端发起的,拿本地数据去比较。效率比较差。

还有一个是发布/订阅模型,就是说,你有一个中间层,允许客户端订阅更新。保存一个列表,表示哪些客户端订阅了数据修改,当数据添加、删除、修改后,就会往感兴趣的订阅中推送这些修改,当客户端取走他们的订阅的时候就知道怎么做了。 --------------------编程问答-------------------- 呵呵,假设你说的问题是一个已经被解决的问题

那么就不会出现vss,svn这类版本控制工具了。
vss,svn和你面临的情况其实是一样的,那么他们如何解决的。
vss通过锁定记录来解决
svn通过手工合并记录来解决

===
这是目前看来能行的通的手段,虽然有些麻烦,有些不和情理,但是如果有更好的办法,俺们程序员用的版本控制系统那早就该用了

--------------------编程问答-------------------- 不明白lz这样做的目的。如果A修改后B可以再修改A修改之前的数据,那这样做没意义吧。如果B不可以修改,可以给修改后的数据加个state,然后和原数据对比下判断一下能否修改。 --------------------编程问答-------------------- 还有一个是发布/订阅模型,就是说,你有一个中间层,允许客户端订阅更新。保存一个列表,表示哪些客户端订阅了数据修改,当数据添加、删除、修改后,就会往感兴趣的订阅中推送这些修改,当客户端取走他们的订阅的时候就知道怎么做了。 

就会往感兴趣的订阅中推送这些修改?????推送修改?如果100个人人订阅了,99个修改了99次;那么剩下的第100个就会接受99次推送,相当于是不断被刷新界面;如果给个判断是否加载的话,那的点99次不加载新数据;
所谓感兴趣的订阅,其实就是开着这个界面的客户端吧;

当客户端取走他们的订阅的时候就知道怎么做了???难道核心在这句?取的时候?



--------------------编程问答-------------------- 所以这个东西总体上我觉着可以有下面几个方法
1.vss的锁定方式,同时只能有一个人操作,其他人只能得到副本,修改权限锁定
2.svn多人操作方式,加入时间戳和修改版本,如果时间戳和版本不对,提示手工合并
3.本地维护一个库,本地在提交前获得服务器的数据,使用dt的合并方法合并记录,然后判定RowState状态 --------------------编程问答-------------------- 1.vss的锁定方式,同时只能有一个人操作,其他人只能得到副本,修改权限锁定
2.svn多人操作方式,加入时间戳和修改版本,如果时间戳和版本不对,提示手工合并
3.本地维护一个库,本地在提交前获得服务器的数据,使用dt的合并方法合并记录,然后判定RowState状态 --------------------编程问答-------------------- 据说微软官网出了这么一个说明
但是咱连微软官网在哪里都不知道
也不懂英文
悲惨啊

问句:这个对表中数据判断跟SVN和VSS这些版本控制工具要做的目的是一致的吗?没用过版本控制工具,没进过团队开发经验;
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,