SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 7089|回复: 10

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

[复制链接]
发表于 2013-1-30 11:37:24 | 显示全部楼层 |阅读模式
本帖最后由 suty 于 2013-7-10 14:15 编辑   {. D, Y0 @: \' Z  U1 e) f

: V7 V- ?. D2 K9 e' Q" s在“客户”这个列表视图中,有添加、除去、新建三个按钮,我现在去掉“添加”按钮,只需要“除去”和“新建”。% B/ |: O' h) x
现在想要实现:在列表视图里选中某位客户的记录,点击“除去”按钮后,不仅要在列表视图中将其删除,还要在数据库中实现彻底的删除。) U1 _' B  c, r! A
请问各位大大这个功能可以实现吗?
4 d; _) D4 E2 d" Z2 G- S

本帖子中包含更多资源

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

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
* d0 M0 a: K- r搭个车求助一下啊,表打我哦,如何设置除去按钮的权限?只想CM组的人能操作。 我也是用的shadowsp ...
9 d& K# z$ G1 q2 C
如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=" `( e0 h4 }5 N, c9 v* I
回复 支持 反对

使用道具 举报

发表于 2013-4-23 14:45:20 | 显示全部楼层
shadowsphx 发表于 2013-4-18 09:18
8 P* h* Y1 d! e如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=
3 k: ^: b) m+ U- M/ t ...
, @* E2 t4 u6 {# i, ]2 T0 q/ S
我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除去按钮没有自动设置权限的地方。我再试试看脚本得写法,呵呵* c3 h% i0 p' P
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:02:20 | 显示全部楼层
可爱的珊珊 发表于 2013-2-1 11:28
1 _' g3 c' s; p5 M: ?' Q3 p在Designer中的chechkout模式下,直接选择按钮,然后删除即可。

) a( B  @; G: M+ h  B: ?我不是想要删除那个“除去”按钮。. a6 w+ U5 H& }7 M! b7 s
而是要在选中了列表视图中的某条记录后,点击“除去”按钮的同时,对这条记录执行Delete操作,将这条记录彻底删除。1 A4 ^. M' c6 e8 u. V2 W
2 |. w- G* K! s7 J' M
不知道有没有办法实现呢?

% p1 }0 z% Z7 U4 l) z) z
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:04:32 | 显示全部楼层
judyx 发表于 2013-4-23 14:45 5 o' q* W3 s, h; J
我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除 ...
. o( \5 y( E, `/ l
我也有这样的一个疑问。不知道这个问题您解决了没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 10:48:47 | 显示全部楼层
本帖最后由 suty 于 2013-6-21 10:50 编辑
7 z; I. P" j) m( P+ _
& p! z% [# b4 z4 `- M父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。( E, L2 G- Y  n& E* j# r: t: _9 N) ?
而我想做的是通过“除去”按钮,彻底将子记录从数据库中删除。
4 ^  M! J( g9 o4 x- b
0 v  F) r5 ]3 W* k. q8 n先前看到这两篇帖子,好像都没有很好的解决这个问题。不知道有没有其他人做过这样的需求?这个问题可以解决吗?
0 |. U0 \( k$ R2 l父子控件中“除去”子记录的问题/ E% X4 g- J; l% e7 V! a# ?
CQ7.0for eclipse客户端,除去脚本出错. j# ], q1 ~. Z' V

+ X* I) K% C2 p1 i* w' ^
7 F* h! R2 p  d% _@懂你 @yunshan @可爱的珊珊 @shadowsphx @lkz @jiangmin  
回复 支持 反对

使用道具 举报

发表于 2013-6-26 23:10:32 | 显示全部楼层
本帖最后由 jiangmin 于 2013-6-26 23:14 编辑
! r  z, V! @- L( |- I
suty 发表于 2013-6-21 10:48 / j' x4 v' E# H  m0 O% H
父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。
) v2 p) w4 W+ A. i3 Z7 ]而我想做的是通过“除 ...
7 \( @" R7 B% d' y
在试验环境中试了下的,我这边的试验环境如下 (CQ 7.0.1)
+ L2 g9 H1 r$ w$ y( e3 l! s7 s记录类型 Project 和 记录类型 Team 是父子关系,在每个 Project 记录中会引用不同的 Team ( REFERENCE_LIST ) , 如截图
0 z% K7 `3 z7 G4 G7 q
: f& ~5 x7 I$ l& P( E. W+ T基本策略是:" R" f/ l4 q. M; o
1. 定义 Notification Hook , 在父记录删除子记录提交完成后,该 HOOK 判断父记录中引用字段的值的变化(也就是删除了什么)
" b* x1 k7 e6 \" c6 j5 g! |# m2. 然后按照删除的子记录值来删除该对象$ T6 `' x, T3 m8 i4 w- Y4 R

: A4 r7 c6 q& O. i8 _############
" V' a' t6 Y1 I& P8 }  Notification Hook
: o) |% z) q. Q############) `3 d2 C; {0 s+ e) j( y& J
        my $session   =  $entity ->GetSession();
. {' {2 u  E0 j" H5 F: Y) W
5 e) s" ^7 g7 U3 r3 Z        # 获取本次操作变化的字段
( i* c& M2 w8 X        my $fields    =  $entity->GetFieldsUpdatedThisAction();
; k8 J& t7 y  V7 D7 j* Q# `, T5 R& k6 ~% Z3 `
        unless ( $fields->Count() == 0 ){
  U2 L' {" y* w$ [$ Z9 ^5 o/ e' [  x( Z) N3 \
                for (my $i = 0; $i < $fields->Count(); $i++) {  o" y6 y9 u+ r
. k  a7 B( }. u1 w9 G+ L5 T+ R2 [, X% ?
                        my $field = $fields->Item($i);
9 w% E0 r1 B% T' X; {/ @9 f7 V                        my $fname = $field->GetName();* B! s: F+ V$ I5 [1 E! U
                        
9 v* w! F' h$ ]% M9 F# g4 s+ X* g                        # 因为我这边 REFERENCE_LIST 字段名为 team (引用子记录 Team) , j; ^1 P, O) w
                        if ($fname eq "team"){# \+ z0 i8 x3 s, D0 r8 W: i
( u% b8 x! `, F. {6 O0 H/ D
                                # 调用全局函数GetStrValue 获取初始值与变化后的值
! w" Q% y- F+ }8 h. W                                my @newValue = split /\n/, &GetStrValue($session, $field, $fname);
- i5 s- n, ~8 U) Q$ k                                my @oldValue = split /\n/, &GetStrValue($session, $entity->GetFieldOriginalValue($fname),$fname);        
' b7 @1 t, @/ f, ~+ c1 p! m+ [8 j% v2 N: I( `
                                # 比较2个数组,获取被删除的子记录+ ]! D2 U( R! p* _
                                foreach $old(@oldValue){1 O# u7 n6 O. r2 x
                                        my $j = 0;
+ D9 `: N8 C/ B7 n/ i                                        foreach $new(@newValue){
, F, x! B/ B' v% S& f: ^1 w% ?                                                if ("$new" eq "$old"){+ i& j$ n% l+ P
                                                        $j = 1;
$ {% @* v7 @+ A                                                        last;
& h% X" h' _. R                                                }+ E9 n  c4 e! j( G
                                        }
( ?( h) P+ y; J                                        if ($j == 0){                                                7 `1 W" v* r& e; C* L' n& P/ X! v
                                                # 对于父记录中被删除的子记录(当前仅是删除父子关系阶段,调用全局函数DeleteEntity 以从数据库中彻底删除)9 Q% I! T9 X$ D9 P
                                                &DeleteEntity("Team","$old");8 Q4 Q9 R- d; ~% V
                                        }2 z  i5 ^1 q5 l4 M$ O& Y) I3 r
                                }( `8 e1 w9 F5 r" @! }
                        }
  c* W' l& K4 W& u3 i                }3 Q9 M6 L0 b6 Z: k, [! g7 k  R
/ ]' m% s; z# q. Y" `0 K* ~' _
        }# k  v; }- b" y' V, }# w! K

/ X$ d1 X, m4 V" |/ c3 i
8 L4 g7 Z' ?  f" J9 Z2 t################
6 w8 B2 x2 j$ O   GetStrValue 全局函数
8 v. R2 v6 ^0 L( F5 g6 n; K################6 C: Z4 F2 v# S( j/ [
; `% t) Q: m! P+ }3 X& P5 l
sub GetStrValue {
' u  Z  k- G5 ^. `5 E5 E* O        my ($session, $field, $field_name) = @_;
8 O4 _" h, `! v" \% |+ [: o2 ?        my $val = "";
( t0 ~/ K( L/ }0 [        my $type = $field->GetType();
; n6 S" R5 A. K' p2 G        if ($type lt 6) { # string, int, date, reference
0 G+ p- _- V& U) b& K" `" U& s                $val = $field->GetValue();
* [' a, r! ]4 B+ e! u. O        } . A/ z, k" w6 z
        elsif ($type == 6) { # Reference_list
) O1 v! ~1 q* W$ r3 o! i* f/ J  `" H- l$ Z* _( U3 ]
                my $list = $field->GetValueAsList();) E1 P8 M4 t1 t+ ^  {; K( ]# u6 \
                foreach my $item (@$list) {( \6 m) B0 [" K2 }! q8 v
                                $val .= "$item\n";" O6 `+ K; L5 v4 L
                }
9 g& A! c5 x/ b6 M9 E        } 0 i, F: I9 d0 u. Q
        elsif ($type == 9) { # State, Y7 i8 b& ^6 P& n. `. M
                $val = $field->GetValue();; O: |% F: s' O0 E  Y
        }, \! s- l) Q9 f# t0 I& ?
        return $val;3 ?: A! n* J- }
}* b, _( p; a7 g% |' s; V* Q* {

! Y  b0 e# @6 j5 ]% E/ Y* I6 V$ k* W  F( m
: L- q5 v7 f. @! v+ F) }  ?
################
. \0 x/ R* Y% r9 S  g- m   DeleteEntity 全局函数 * Y7 S0 T" y2 {7 j  ^  ~
################. p' U0 M, D8 F) P. t, z$ U
& k0 |' k9 m3 C! n) R2 c
sub DeleteEntity{2 R, F4 {1 S5 o2 e1 x' a

" M8 w$ |- u$ Q5 E9 h        my($entity_type,$entity_name) = @_;% |9 z5 h) f" X3 F* i
9 O0 F0 T0 y0 {0 i/ b! E0 Z6 @
        my $entity_del  = $session ->GetEntity("$entity_type","$entity_name");) v% o2 ]) |* w/ N

5 N/ ~$ x" W- v" r* R& O" |        $session->DeleteEntity($entity_del,"Delete");  B* k+ `) d3 O8 ?
& x* |( d- Z& h2 X0 E' f
}
: t+ q- b' m8 G# [0 X+ l! T
9 J2 E; O7 U: m/ a5 P9 ~, i& q! }( Y7 ]! L
6 K2 B5 u- h1 Y3 L- ?

本帖子中包含更多资源

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

x

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2019-6-18 19:39 , Processed in 0.071338 second(s), 9 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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