SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6363|回复: 10

[已解决] 有关列表视图的“除去”按钮

[复制链接]
发表于 2013-1-30 11:37:24 | 显示全部楼层 |阅读模式
本帖最后由 suty 于 2013-7-10 14:15 编辑
7 r' b& M( n; Z8 E/ N" M, {; w( q# M6 n4 _% o' ^" |) t4 l
在“客户”这个列表视图中,有添加、除去、新建三个按钮,我现在去掉“添加”按钮,只需要“除去”和“新建”。5 b$ u: P# q7 M8 i
现在想要实现:在列表视图里选中某位客户的记录,点击“除去”按钮后,不仅要在列表视图中将其删除,还要在数据库中实现彻底的删除。' [+ m" m: L$ r3 {2 w6 K
请问各位大大这个功能可以实现吗?
: e& {$ [7 H4 W0 t' B8 d

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

本帖被以下淘专辑推荐:

发表于 2013-1-31 09:13:28 | 显示全部楼层
在每个记录类型里面不仅有“字段”,“状态”等,还有个“记录脚本”。在里面应该写段代码,然后关联在“除去”按钮的属性中的“扩展”页面中的“预操作”或者“后操作”。我没试过,但是我觉得应该是这样。
回复 支持 反对

使用道具 举报

发表于 2013-2-1 11:28:07 | 显示全部楼层
在Designer中的chechkout模式下,直接选择按钮,然后删除即可。
回复 支持 反对

使用道具 举报

发表于 2013-4-17 18:04:34 | 显示全部楼层
搭个车求助一下啊,表打我哦,如何设置除去按钮的权限?只想CM组的人能操作。 我也是用的shadowsphx的思路,但是就是不知道咋实现,能在记录脚本里面限制权限吗?
回复 支持 反对

使用道具 举报

发表于 2013-4-18 09:18:10 | 显示全部楼层
judyx 发表于 2013-4-17 18:04 # ?$ j" `, P/ i' @
搭个车求助一下啊,表打我哦,如何设置除去按钮的权限?只想CM组的人能操作。 我也是用的shadowsp ...

! {' v2 b3 M0 [如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=
! |" G$ q6 n- W; U# C
回复 支持 反对

使用道具 举报

发表于 2013-4-23 14:45:20 | 显示全部楼层
shadowsphx 发表于 2013-4-18 09:18 2 V7 t% ], s2 K5 ~' ~; W
如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=
3 C, X# y- b& c2 p/ m' Q: A7 H% b ...
: B4 {+ H/ ~* l6 R; a9 N: r
我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除去按钮没有自动设置权限的地方。我再试试看脚本得写法,呵呵( E# L5 I  D" e6 v5 [, B- j
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:02:20 | 显示全部楼层
可爱的珊珊 发表于 2013-2-1 11:28
- F" {8 m' d" U" b  e8 h在Designer中的chechkout模式下,直接选择按钮,然后删除即可。
, o% Z* T' b; F. {
我不是想要删除那个“除去”按钮。4 L% X! \7 A3 @# o8 p. @
而是要在选中了列表视图中的某条记录后,点击“除去”按钮的同时,对这条记录执行Delete操作,将这条记录彻底删除。
) X/ ?8 q1 ]8 Y
, j. D6 }! B: Z. j8 u不知道有没有办法实现呢?

. t7 D: o( p* R) _. g* T3 ^# C
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:04:32 | 显示全部楼层
judyx 发表于 2013-4-23 14:45 % K% t; D3 z, O$ D1 S; X
我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除 ...
/ \) @# N" |  Z) n- l9 ^
我也有这样的一个疑问。不知道这个问题您解决了没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 10:48:47 | 显示全部楼层
本帖最后由 suty 于 2013-6-21 10:50 编辑 . R$ d+ o! L6 [4 _/ m( A' r
( ]& L6 k! J1 S. w2 w' F7 K$ ?
父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。, C- Q) ~; l7 T/ G/ k) J
而我想做的是通过“除去”按钮,彻底将子记录从数据库中删除。& X) r% x7 [( S& I7 A

9 e" E* S& E* A: }先前看到这两篇帖子,好像都没有很好的解决这个问题。不知道有没有其他人做过这样的需求?这个问题可以解决吗?
8 E  z/ x. Z9 d0 G父子控件中“除去”子记录的问题5 K! q; L9 V9 n" y
CQ7.0for eclipse客户端,除去脚本出错! U; T& b6 Q2 }
4 R  S8 l' w. X* l( h) t2 H9 u

) a3 \! ]2 o4 y@懂你 @yunshan @可爱的珊珊 @shadowsphx @lkz @jiangmin  
回复 支持 反对

使用道具 举报

发表于 2013-6-26 23:10:32 | 显示全部楼层
本帖最后由 jiangmin 于 2013-6-26 23:14 编辑
/ b0 Y2 k4 N  o1 a) I6 p
suty 发表于 2013-6-21 10:48
/ c* |$ g& ~; i. f1 h5 ~8 _父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。( z# r' h* {) M* A( C) Y& U
而我想做的是通过“除 ...
  Z5 u) H% }7 F5 o* X
在试验环境中试了下的,我这边的试验环境如下 (CQ 7.0.1)" ^; v. B7 u& ^. f# F$ f+ A8 z
记录类型 Project 和 记录类型 Team 是父子关系,在每个 Project 记录中会引用不同的 Team ( REFERENCE_LIST ) , 如截图9 e9 }/ h" o: D8 `! ^* D6 M- Y

; K4 [6 ^7 m# l0 `6 K; J8 T; J8 U基本策略是:
8 \, y% P+ @8 a; G- ^: f2 |1. 定义 Notification Hook , 在父记录删除子记录提交完成后,该 HOOK 判断父记录中引用字段的值的变化(也就是删除了什么)
; w- C; s. R; t* }) \, L" a6 M! @2. 然后按照删除的子记录值来删除该对象4 h. z- j" N, i2 \$ B. P
$ ]! X4 |: J' j3 }% n
############
- r) I- D" s) R/ Z1 N( t7 ^+ Z$ c3 p  Notification Hook) B* U* u. p& j6 h5 @4 J
############
; K" E, [, E- s) p  {        my $session   =  $entity ->GetSession();
" b# |* X3 }2 O; U9 h/ E, U
2 [8 H4 q; d' U5 K+ H5 ~2 p7 j        # 获取本次操作变化的字段8 |2 \7 P0 C3 ]8 Q6 x
        my $fields    =  $entity->GetFieldsUpdatedThisAction();
; G0 ^: L" V2 P$ @4 q+ x9 O4 Z1 U9 P# M8 t$ S' B$ n; W  K+ ]
        unless ( $fields->Count() == 0 ){( u2 J8 s* V3 `0 o6 v+ ~8 k( z$ k8 b& b

* p4 P' u/ c  U% ]7 R  ~, V% N: ~                for (my $i = 0; $i < $fields->Count(); $i++) {5 v" _- E4 E# U1 |( G; z
( V4 L/ Z3 L9 D$ @& {; n
                        my $field = $fields->Item($i);" t& e" f. q% s! f* U5 X: ?9 z
                        my $fname = $field->GetName();) [0 Y1 ?2 G  d/ Y" A; U
                        ( v8 W; ^  D( `2 o% `7 x
                        # 因为我这边 REFERENCE_LIST 字段名为 team (引用子记录 Team) ; n1 I$ m- v/ n5 _
                        if ($fname eq "team"){
' a  ?2 ]2 Y) F- c  c# ^7 k" o4 w# O3 a3 z7 S2 ^* M
                                # 调用全局函数GetStrValue 获取初始值与变化后的值
+ U8 T# e1 K7 v                                my @newValue = split /\n/, &GetStrValue($session, $field, $fname);( _. T* ?! w1 b7 [& `, L1 V% m( Z
                                my @oldValue = split /\n/, &GetStrValue($session, $entity->GetFieldOriginalValue($fname),$fname);        + K) i" J0 d1 U/ O( |) l* K  H
5 g3 ?: a2 `# K9 c" z& A
                                # 比较2个数组,获取被删除的子记录7 A5 J0 \3 h" |7 q, s
                                foreach $old(@oldValue){
! c3 ^5 I. c  ^3 [2 Q  _( t2 g                                        my $j = 0;1 X3 T% e5 @1 v
                                        foreach $new(@newValue){
" B' u2 z8 u  u& r6 M, w# ]                                                if ("$new" eq "$old"){
1 \& I9 j- z) z' S                                                        $j = 1;- c5 v6 A7 l% t' [
                                                        last;, Q# e1 j( j+ z7 e0 g
                                                }
; a% r* }# h0 n8 F! ~                                        }1 D& b4 @" x$ h! R1 Z% u
                                        if ($j == 0){                                                
1 G, L( T- v2 S) h, @                                                # 对于父记录中被删除的子记录(当前仅是删除父子关系阶段,调用全局函数DeleteEntity 以从数据库中彻底删除)
7 u( r6 j- d  ^, O9 t                                                &DeleteEntity("Team","$old");
7 @! |- _7 J3 v2 w+ c/ Q- F                                        }% e6 C9 y0 e" Y$ c
                                }) R. N4 Y4 y) ^2 B1 f, I, t2 h
                        }
+ ?! b4 P+ D! K1 w6 k! D                }* M5 g' t1 N7 ^. V  R. T: q
2 @; K- B1 E: u, Y
        }
' K' \4 r! e+ M/ }9 e$ W3 f; S5 m# ?
$ A& j" M' ^. d, i9 X  j! {, m; q
################6 Q: A9 W9 k0 g2 \! g, N
   GetStrValue 全局函数 1 J, _6 l7 N: C- s% t
################' a2 a: q" d+ w

5 R2 `+ e) _6 ^* r$ l3 A6 ]sub GetStrValue {
# e% e  v3 [) P3 ]4 i* t& C, I! N        my ($session, $field, $field_name) = @_;! f+ z' Q  A4 E. s/ X0 X/ c, N, F7 t
        my $val = "";
% f- R9 W( F7 @0 \        my $type = $field->GetType();1 Y! W$ Z/ W* X- z5 c1 y( g
        if ($type lt 6) { # string, int, date, reference/ S7 C; g% ]3 L, J; [
                $val = $field->GetValue();
, V$ z% G" b4 e/ C        } , V" o: x. {8 v. j) F+ X
        elsif ($type == 6) { # Reference_list5 ^) p& A, B: g
! U! u, H: m0 [9 A* b
                my $list = $field->GetValueAsList();
, i5 D- P3 ]' S2 B& B# ?                foreach my $item (@$list) {* q* Q, a* B) _1 s1 E; h2 W$ s# k
                                $val .= "$item\n";8 w4 Q5 m* d, U8 x
                }
; l: c9 e* _, f2 K& Y        }
: F8 e9 Z$ ]# M+ F* R/ p1 `        elsif ($type == 9) { # State
# c9 a* {1 I- i7 T; U- \$ b                $val = $field->GetValue();
2 N8 I& z% x& V# I4 g& e        }
( ?0 K9 }  I  r* G$ z        return $val;) S7 F& U# Y. k$ e- _3 R
}6 C% g; u7 u/ ?

* I' b. P9 q2 C- _/ ^3 B+ ^7 T8 Q. c1 [- F' U5 s8 _( E
3 g- i& a2 y9 W. E, |2 ?$ X
################6 {$ k  V/ R) n6 x5 f! ~: k5 u
   DeleteEntity 全局函数 7 e# B& N  B; L8 ^* }
################
! ]/ j( A+ ^/ Y+ c, Y6 z( J
5 X3 W5 Z2 W" u" o$ d. Dsub DeleteEntity{6 A* }4 R' d' Z, ~

" F3 x2 a+ C: W9 f        my($entity_type,$entity_name) = @_;
. M3 {- Q, f9 f7 I$ {$ K; _( F% i6 i+ L# ?2 g, N* ^  r
        my $entity_del  = $session ->GetEntity("$entity_type","$entity_name");
  R. B9 C. u" K& H- _! f# n# b9 v5 {/ q/ c) f1 N" r, u
        $session->DeleteEntity($entity_del,"Delete");
, P7 O/ J8 P3 Q2 v) l2 ]: I( u" M/ |4 X. a+ y: v1 c9 B- @
}
! T. U" I( ^. f% o' z6 y. x% M& t+ ~' E/ x7 O) ~$ ]" |
" Q: I) a$ v# Q  z/ |

8 G. ^1 ]7 z2 x: T$ o+ }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

我觉得CQ如果能全面支持VB嵌入式开发的话,那么功能会强力的=。=  发表于 2013-6-27 09:15

评分

参与人数 1金钱 +10 收起 理由
suty + 10 此方法可行!

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2018-6-24 15:13 , Processed in 0.075961 second(s), 10 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表