SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6460|回复: 10

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

[复制链接]
发表于 2013-1-30 11:37:24 | 显示全部楼层 |阅读模式
本帖最后由 suty 于 2013-7-10 14:15 编辑
- u7 D# I" J& w% ?6 _, V# z8 N$ W6 R: j6 |) q" A
在“客户”这个列表视图中,有添加、除去、新建三个按钮,我现在去掉“添加”按钮,只需要“除去”和“新建”。  g- D- q4 T+ i6 s6 v& h
现在想要实现:在列表视图里选中某位客户的记录,点击“除去”按钮后,不仅要在列表视图中将其删除,还要在数据库中实现彻底的删除。
( n1 h7 m3 q+ T3 |0 m+ t请问各位大大这个功能可以实现吗?6 g5 M3 C0 Q6 r% K0 V

本帖子中包含更多资源

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

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 3 l. l4 o3 w) o, ?* F* k
搭个车求助一下啊,表打我哦,如何设置除去按钮的权限?只想CM组的人能操作。 我也是用的shadowsp ...
) W7 D) o7 t5 W0 [# N6 U
如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=$ T( M/ H2 D- J) H$ ]! L5 {/ Y
回复 支持 反对

使用道具 举报

发表于 2013-4-23 14:45:20 | 显示全部楼层
shadowsphx 发表于 2013-4-18 09:18
3 H6 P2 L3 @' \5 z8 F8 _0 @1 ^如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=0 z4 t: e8 ^) n& U1 V8 {( F
...

/ t" s) v9 b* ]' P! |/ k7 G  N, W我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除去按钮没有自动设置权限的地方。我再试试看脚本得写法,呵呵
  |* H! |: E# p3 Z9 B5 m9 I/ O3 I
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:02:20 | 显示全部楼层
可爱的珊珊 发表于 2013-2-1 11:28 2 `/ p- x; V8 U  H4 I3 g7 s
在Designer中的chechkout模式下,直接选择按钮,然后删除即可。
, U* U8 U  J* D! H
我不是想要删除那个“除去”按钮。# |3 `( B6 y- ~( ?( O- M, k- m; V
而是要在选中了列表视图中的某条记录后,点击“除去”按钮的同时,对这条记录执行Delete操作,将这条记录彻底删除。9 {% B4 x6 q* d
) E( n9 W# {# y
不知道有没有办法实现呢?

2 `( ]/ c) h/ x$ `. {8 K0 M
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:04:32 | 显示全部楼层
judyx 发表于 2013-4-23 14:45 " r& x$ ?, e* Z/ e# x3 N" q
我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除 ...

$ Y2 M- N  H: @' D我也有这样的一个疑问。不知道这个问题您解决了没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 10:48:47 | 显示全部楼层
本帖最后由 suty 于 2013-6-21 10:50 编辑 5 s) }" q& Q. ^3 V" k
3 C7 m. X% L; Q  A5 n* v2 {
父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。
, b+ G; r& ?' F, X7 Y7 F( l而我想做的是通过“除去”按钮,彻底将子记录从数据库中删除。/ ]) f7 z9 k2 c) W: Z; w5 U8 m
' K+ u% v+ j* Z
先前看到这两篇帖子,好像都没有很好的解决这个问题。不知道有没有其他人做过这样的需求?这个问题可以解决吗?( x. Y. N% q) V8 `5 M" w
父子控件中“除去”子记录的问题- p8 G+ a$ ?$ t& k- n8 y
CQ7.0for eclipse客户端,除去脚本出错
% k6 R) c8 r6 {+ G. W
# s5 W6 G  [4 K" t1 P9 x* s! v+ i: J; Z. C+ a+ l
@懂你 @yunshan @可爱的珊珊 @shadowsphx @lkz @jiangmin  
回复 支持 反对

使用道具 举报

发表于 2013-6-26 23:10:32 | 显示全部楼层
本帖最后由 jiangmin 于 2013-6-26 23:14 编辑 / d0 G5 j+ H4 }% f6 X/ e' x# j
suty 发表于 2013-6-21 10:48 : R6 V1 A* ~' K, t* j$ R/ _" u$ c0 E
父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。
* P5 ^( l7 }: ]" z而我想做的是通过“除 ...
! L. n; z; k! H( u0 q8 M6 u3 d# M
在试验环境中试了下的,我这边的试验环境如下 (CQ 7.0.1)6 t/ o) z4 f# @* D
记录类型 Project 和 记录类型 Team 是父子关系,在每个 Project 记录中会引用不同的 Team ( REFERENCE_LIST ) , 如截图5 q. B# ^; u: {) ~- g1 Z1 J- t

3 ^) B% _( b' R, s基本策略是:& O: s0 ]+ C$ x0 ~8 X. I8 X
1. 定义 Notification Hook , 在父记录删除子记录提交完成后,该 HOOK 判断父记录中引用字段的值的变化(也就是删除了什么). j( n. M3 p$ H) x8 e& {3 g
2. 然后按照删除的子记录值来删除该对象
" g+ [9 Z6 c# b- }  ]0 N% ^! s- o; u9 j6 K
############3 g: w' l* K4 X+ X: }
  Notification Hook  F: T2 R+ O6 |2 h; D* Y+ i* E
############# h( z3 I) \; x1 n/ f5 w% f4 C0 j
        my $session   =  $entity ->GetSession();% i* _# H* ~+ B) R
  X0 H9 p; U# q
        # 获取本次操作变化的字段
+ y5 T' D4 V2 `+ A* N        my $fields    =  $entity->GetFieldsUpdatedThisAction();
) u+ d3 W- _/ z$ K& d! M) d: H) H+ l6 j
        unless ( $fields->Count() == 0 ){
0 ]+ {( j+ H5 ~6 F
5 c! U, T* _* T                for (my $i = 0; $i < $fields->Count(); $i++) {
% N/ v& b/ {/ q2 C' Z7 o+ K+ g8 u1 n0 }" `& A% d5 m0 ^" I
                        my $field = $fields->Item($i);' k$ e% X$ W, G+ x( y0 f9 c
                        my $fname = $field->GetName();  i8 C, U& U2 z# r( t
                        ! B9 g1 R8 M9 s0 T5 a( p
                        # 因为我这边 REFERENCE_LIST 字段名为 team (引用子记录 Team)
. V) {0 ^* ~& |3 k8 x+ F6 x5 c                        if ($fname eq "team"){
" Y' y- X" M; I* G1 F& n0 h+ W: v0 [" y
                                # 调用全局函数GetStrValue 获取初始值与变化后的值
! Y+ i( h& t( E6 J                                my @newValue = split /\n/, &GetStrValue($session, $field, $fname);) h  @  T( Z7 i4 t0 l1 Z4 c
                                my @oldValue = split /\n/, &GetStrValue($session, $entity->GetFieldOriginalValue($fname),$fname);        
& i1 M. J+ Z/ f7 V+ S9 g0 X  \6 }8 t8 `" c% U0 _$ T6 ~4 V
                                # 比较2个数组,获取被删除的子记录* Z- N$ ]3 E$ n( ?, [. b
                                foreach $old(@oldValue){
7 U# U8 Y  v7 R0 c9 Y6 e                                        my $j = 0;$ g+ W( F  ~8 K4 X
                                        foreach $new(@newValue){
$ l# ?- _. E1 ?  K- N) j5 }0 h% _                                                if ("$new" eq "$old"){
7 @1 s5 [) a5 T2 O% g4 ]% F: z7 W                                                        $j = 1;( f# L: R9 |0 \
                                                        last;
3 R8 F& v2 r- i2 `5 j6 `- G* }                                                }3 X6 i: E* r4 C' `6 i
                                        }
" K' A: l. v0 ~$ z- E                                        if ($j == 0){                                                
& d" V1 _6 D5 {; t                                                # 对于父记录中被删除的子记录(当前仅是删除父子关系阶段,调用全局函数DeleteEntity 以从数据库中彻底删除)
6 l2 e" n5 `' n& O9 P                                                &DeleteEntity("Team","$old");6 O" ]! q6 i" t6 y- R2 y  _; H6 C
                                        }
6 l. m& c: g! y5 j+ d+ b                                }
( h! \( S  o4 x( D' z                        }4 x4 Q, S+ u4 \. v! u
                }
- h3 l4 U) c( D# [! D
: E) s8 D2 r7 Q# W1 `, ]        }
8 ]+ r& s, m6 T& M; g* z( S( U; T8 B' f0 ^# `) k
) u* V5 J4 j7 N- ~7 I; v7 m
################
: l9 H( ^, d. F4 x  v) w   GetStrValue 全局函数 ) f7 v" F9 I# r( ^6 P
################# j, e* P) A% @& h
% {) I8 F5 J, f) A
sub GetStrValue {8 O8 ^* U/ e. r9 u. H+ \- R/ o  `
        my ($session, $field, $field_name) = @_;
" W. g- X3 V% e, ?        my $val = "";% d5 c$ a2 |5 e  ^& w4 ^
        my $type = $field->GetType();# u. g/ H: \" P# J9 T" ?. D9 o
        if ($type lt 6) { # string, int, date, reference
* e' S+ u* X1 e9 g4 q7 K                $val = $field->GetValue();
1 H, a# B, ~  ]6 Q' y& T6 k5 R        } 6 f5 W% E: v! m$ G$ X
        elsif ($type == 6) { # Reference_list
# P+ ~  i* ^0 t
7 V0 r7 e4 ~2 S8 \                my $list = $field->GetValueAsList();
/ c. o+ R6 d& C                foreach my $item (@$list) {
- b' j. h5 l4 z) v, k                                $val .= "$item\n";
% g# M' c) W/ A7 X. U, @                }/ \* @0 L& o. P/ o" Q
        }
* }4 f5 D8 [0 |5 V" P$ C        elsif ($type == 9) { # State/ f  p/ V2 K& h3 o4 f
                $val = $field->GetValue();
) c$ o9 D, I2 H9 Y        }
- ]# P* D- k! W; C) d        return $val;, t3 g: W/ S' A  A" f8 k) Q% M7 l
}
- p- g" c/ G% x7 u4 [' y$ ?* J
7 ]: G. ~. b1 H  l" U9 u2 w5 |6 v. @$ V/ z8 _% O- d3 k1 S
# d( {( u+ I" h' b" ~
################' _. a& M# u3 ?; |
   DeleteEntity 全局函数 2 U8 f* ^7 _# p$ Y! B/ e
################
3 C- r% k) U, Z4 b- q
' d' t2 Q1 O' x, Ksub DeleteEntity{
- i2 T  ], M! G9 n# O: l( v9 }
. z+ X. I7 p% B- P        my($entity_type,$entity_name) = @_;( p) O) v9 X" {! M5 A' v
7 R  x  C$ H  ?) }
        my $entity_del  = $session ->GetEntity("$entity_type","$entity_name");. S" T4 F7 g. I9 W) o7 A. H

: M! K( l  |0 M" {        $session->DeleteEntity($entity_del,"Delete");
- N4 g$ `8 N" C2 I% w  ~1 ]* ~0 ~5 h( z+ i6 W
}5 P! L; T( P4 [3 R% L0 w% z: i

3 T" o1 E& K' A( m% {  E
0 ]7 V9 S6 [# y+ ]: |. x4 \  w3 B2 z  x' r' u% I, v4 S- f

本帖子中包含更多资源

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

x

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /3 下一条

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

GMT+8, 2018-8-14 17:10 , Processed in 0.075451 second(s), 10 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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