SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6880|回复: 10

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

[复制链接]
发表于 2013-1-30 11:37:24 | 显示全部楼层 |阅读模式
本帖最后由 suty 于 2013-7-10 14:15 编辑
7 w) x7 @& a/ T0 K- y0 ^* [6 W% u% s" @) I% a# r3 c+ E6 J% l
在“客户”这个列表视图中,有添加、除去、新建三个按钮,我现在去掉“添加”按钮,只需要“除去”和“新建”。
( @; ]2 o4 c1 |$ K2 L* i3 L现在想要实现:在列表视图里选中某位客户的记录,点击“除去”按钮后,不仅要在列表视图中将其删除,还要在数据库中实现彻底的删除。
4 q1 t* S' F4 `# l9 ^请问各位大大这个功能可以实现吗?: [# ?. G+ N3 o& k

本帖子中包含更多资源

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

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
( m% l+ h8 C" I. w搭个车求助一下啊,表打我哦,如何设置除去按钮的权限?只想CM组的人能操作。 我也是用的shadowsp ...

5 F: w2 j. x' f8 X$ V, i  m如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=3 u0 L% u9 K! s3 B6 g
回复 支持 反对

使用道具 举报

发表于 2013-4-23 14:45:20 | 显示全部楼层
shadowsphx 发表于 2013-4-18 09:18
- u7 ^& {6 S$ s/ N. P  u+ w如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=
7 p9 y: ]/ S0 I- s2 d ...

' y9 s& k$ p5 }. D我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除去按钮没有自动设置权限的地方。我再试试看脚本得写法,呵呵
( [9 L9 {3 e5 i9 H1 `: G9 J
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:02:20 | 显示全部楼层
可爱的珊珊 发表于 2013-2-1 11:28 ; ^- C) r  @' m6 `* Z& ?: x
在Designer中的chechkout模式下,直接选择按钮,然后删除即可。
0 R! e& V7 K8 {1 U
我不是想要删除那个“除去”按钮。! y: e8 L) j! ^3 a
而是要在选中了列表视图中的某条记录后,点击“除去”按钮的同时,对这条记录执行Delete操作,将这条记录彻底删除。
1 _' V7 \0 m, u3 o# a& a: x$ N( i9 B( O, W: ]4 Q9 ~) N/ p  t
不知道有没有办法实现呢?
* k5 b, ?* X( Z9 r
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:04:32 | 显示全部楼层
judyx 发表于 2013-4-23 14:45 / x' g; @7 ~0 k% z( f
我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除 ...

; t, ^6 H$ b6 a我也有这样的一个疑问。不知道这个问题您解决了没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 10:48:47 | 显示全部楼层
本帖最后由 suty 于 2013-6-21 10:50 编辑
4 e+ N9 N2 m  f/ U, N4 u' E0 V. b- O: H4 l  f  K8 I3 Z# }
父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。
% O3 i. p3 r2 d, e# \  `4 _" w/ P而我想做的是通过“除去”按钮,彻底将子记录从数据库中删除。, d: R" q) B" [
& }8 R( f( n# X4 |
先前看到这两篇帖子,好像都没有很好的解决这个问题。不知道有没有其他人做过这样的需求?这个问题可以解决吗?" g, \& V) K1 k/ n/ V
父子控件中“除去”子记录的问题/ O* ~2 Y) e, T% W/ S& [5 @
CQ7.0for eclipse客户端,除去脚本出错/ t8 K. m; z, H9 d" ~5 T( S( q
' W( n' f: O+ x' ?9 N) J
9 P2 F9 n( G  W. h0 v8 S: Z+ d$ g
@懂你 @yunshan @可爱的珊珊 @shadowsphx @lkz @jiangmin  
回复 支持 反对

使用道具 举报

发表于 2013-6-26 23:10:32 | 显示全部楼层
本帖最后由 jiangmin 于 2013-6-26 23:14 编辑
0 a) D" ]- e7 r# y' B
suty 发表于 2013-6-21 10:48
2 Y/ U% @- o8 |6 S  N父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。9 X5 }' S  P, i( ~; J( H
而我想做的是通过“除 ...

2 S* U7 D9 I( F在试验环境中试了下的,我这边的试验环境如下 (CQ 7.0.1)
5 b- }4 s" K& R) L" d) z5 X记录类型 Project 和 记录类型 Team 是父子关系,在每个 Project 记录中会引用不同的 Team ( REFERENCE_LIST ) , 如截图8 }# n0 j+ C$ F' t5 T9 I9 f" C: ]  |

/ c# M' u  M( y基本策略是:
/ o# W8 |$ k4 c# G, U6 c7 r1. 定义 Notification Hook , 在父记录删除子记录提交完成后,该 HOOK 判断父记录中引用字段的值的变化(也就是删除了什么)
3 X% u) V$ _4 s4 _* W2. 然后按照删除的子记录值来删除该对象) |2 O! z+ `/ l& g$ Z0 @

7 P- B2 r4 ]) ]3 Q  c* w1 E3 Y############
; y- U5 i" @% h0 D4 D  Notification Hook
+ H6 C$ ~: w# I) K+ L0 d############
! R* G) v/ ?( V9 L. C        my $session   =  $entity ->GetSession();
. ~# c. t: f, Q2 p& A* A9 K7 a% g  l. L
        # 获取本次操作变化的字段5 \) t% @% T* e$ a1 k
        my $fields    =  $entity->GetFieldsUpdatedThisAction();
+ Y+ \/ ^. \+ t- U6 R* k, K; a4 f+ B/ l( N- }" h5 ^
        unless ( $fields->Count() == 0 ){- E& \; M6 x7 K$ o, ^0 [$ P

9 C7 c- G8 \8 M1 Q* X                for (my $i = 0; $i < $fields->Count(); $i++) {
7 y* M3 y4 m4 S1 f  z% G
3 s- D! Y( t. K                        my $field = $fields->Item($i);
( ?2 Y9 }, c6 |2 U6 I4 A                        my $fname = $field->GetName();
) t/ E; _! ]6 D/ ?% A                        " h+ d: Y- j% \( ]0 @5 ]. F
                        # 因为我这边 REFERENCE_LIST 字段名为 team (引用子记录 Team) 3 j7 L6 t# O1 r
                        if ($fname eq "team"){$ d9 E0 ~0 h4 k) w6 H
' q* V* B: I4 h& i3 f. g
                                # 调用全局函数GetStrValue 获取初始值与变化后的值$ x9 l% X8 j, [9 X& m& S
                                my @newValue = split /\n/, &GetStrValue($session, $field, $fname);
5 {/ V) |. ?: k                                my @oldValue = split /\n/, &GetStrValue($session, $entity->GetFieldOriginalValue($fname),$fname);        . d* l% z9 o) B2 ]0 x2 [
1 L& C2 O. H3 m5 ^
                                # 比较2个数组,获取被删除的子记录+ S" s$ B1 B& b4 ^6 K: [! S& j
                                foreach $old(@oldValue){
. {) S) G# H7 f: `% ]5 Q# Q                                        my $j = 0;+ b* _9 Y1 }& W4 ?
                                        foreach $new(@newValue){. R: B7 Z6 K7 s2 J2 J* J3 D
                                                if ("$new" eq "$old"){
9 @) Q* N4 U( r                                                        $j = 1;. }9 k+ {+ `% N/ l, [2 Y
                                                        last;1 }0 W/ g0 Z4 Y0 c& ]9 b- o8 ?
                                                }
5 R/ y2 v+ f2 ^                                        }# O) F% w4 E6 W
                                        if ($j == 0){                                                
' g1 M+ F. [  f8 Q5 Q  N                                                # 对于父记录中被删除的子记录(当前仅是删除父子关系阶段,调用全局函数DeleteEntity 以从数据库中彻底删除)
/ |' m8 f* j+ o* s$ O5 z2 u: g                                                &DeleteEntity("Team","$old");
7 p! z, i6 V+ p  ^) e8 y$ j                                        }0 ^. E2 R* l) c8 p" ?# R
                                }
6 P7 ?+ c7 W* m* K3 r5 O# V# h7 i( P                        }
" O! K5 N+ \  R5 v/ k7 J                }. O2 W. ^% a+ m) F, y) Q
: H  D+ K" f& X
        }/ r$ i0 [8 {3 U6 Z

; v  h& M2 P4 w/ s
, a7 n& V2 W% ]4 o7 \( v################: a$ Z: V2 }) F" I: O8 L. Y
   GetStrValue 全局函数 4 i1 q/ G  v+ J+ s8 Q% V+ z; S
################
* ^& I8 U7 r/ P: [- y8 Y- }
' w( Z; W- }8 esub GetStrValue {
* ]" K7 P" u- j4 q        my ($session, $field, $field_name) = @_;
2 ^: H, P0 q* ~. @# W- K        my $val = "";
' w% t" W  V+ r' r        my $type = $field->GetType();% I& i+ J$ ~! ^( ?! Z8 S/ S) c
        if ($type lt 6) { # string, int, date, reference
( R  H3 G: W0 O2 b                $val = $field->GetValue();
' I' m3 h; A" w. Q6 X) o/ T        }
: O6 V& s- ~1 R2 {# {/ G        elsif ($type == 6) { # Reference_list
6 _4 I! ~3 F; R9 q  L6 S) ~8 H. g: T6 p, Q  S3 s
                my $list = $field->GetValueAsList();
9 A$ }( A* {  z                foreach my $item (@$list) {
, X; v5 u1 [& ~3 I9 ?: n, j- u                                $val .= "$item\n";' L; T$ U0 i4 ~- x& n/ G  |
                }
/ ~. U' P2 u" V% S        } 3 t, s- p5 F- w4 p4 ?0 b( |: I8 m
        elsif ($type == 9) { # State
; ~8 g, E2 x5 J( s' }                $val = $field->GetValue();/ S, b8 S+ i5 p/ m
        }
% {0 B. x* Q. Q7 ~& {1 z        return $val;- r( Z7 n. o7 p* Y- a2 I; C) z) c6 B1 A
}
; }% p4 o' l, P  k. J& ^1 `3 A! [7 X
2 U" P5 Y* D+ l$ H0 i+ V# N2 k! \3 J* P9 X  C, P. N

- g0 c9 Z! v4 a: R/ L4 B2 O2 J################: G6 F4 I: x1 `, Q- p/ r, q
   DeleteEntity 全局函数 0 W) A# ?2 O: ]: S9 d2 j! }
################
4 N: r3 S8 S8 y  t" r
9 W8 q; ^0 r3 w* B7 msub DeleteEntity{
2 v% T8 t) N: i4 ]6 o# |; Q* }7 z5 a9 C1 ^$ `
        my($entity_type,$entity_name) = @_;
' y0 ]' o, {! B7 q# f3 k7 {) s9 D# ~, I, N; [% `
        my $entity_del  = $session ->GetEntity("$entity_type","$entity_name");0 s& U- v# M  b3 w" f8 M

& S! y7 _$ p, Y* B        $session->DeleteEntity($entity_del,"Delete");8 r' f5 R" E; J- S2 A
4 O, L2 A0 L3 A, n2 d0 l
}- `4 s% k* b# a. S9 ^5 p
- m# w' p5 S/ P2 J
8 V: A7 G2 f( ~, r2 B7 K
9 M4 g1 N5 p0 l0 t

本帖子中包含更多资源

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

x

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2019-2-20 04:11 , Processed in 0.091373 second(s), 10 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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