SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6589|回复: 10

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

[复制链接]
发表于 2013-1-30 11:37:24 | 显示全部楼层 |阅读模式
本帖最后由 suty 于 2013-7-10 14:15 编辑
/ e" A0 B, X4 B1 t
, v, H* Z+ [' S1 W) _( f. H在“客户”这个列表视图中,有添加、除去、新建三个按钮,我现在去掉“添加”按钮,只需要“除去”和“新建”。
  [/ o9 E% p% `. t现在想要实现:在列表视图里选中某位客户的记录,点击“除去”按钮后,不仅要在列表视图中将其删除,还要在数据库中实现彻底的删除。; o8 i2 V4 n9 `/ R# ~: E7 [
请问各位大大这个功能可以实现吗?
  z& V7 C, p. ~. ^3 C# r: Z

本帖子中包含更多资源

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

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
7 ?' ?5 H% |4 V  r, W搭个车求助一下啊,表打我哦,如何设置除去按钮的权限?只想CM组的人能操作。 我也是用的shadowsp ...
; }# `& w) g6 L% Q2 F$ ]
如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=" A0 u2 X" g( F
回复 支持 反对

使用道具 举报

发表于 2013-4-23 14:45:20 | 显示全部楼层
shadowsphx 发表于 2013-4-18 09:18
% q; P) c# R+ x3 H8 z6 a  b, P# K如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=) F3 N' S8 Q1 T# E% b6 o4 j: J
...

" H! P' a% H8 q' }) H: ^6 n我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除去按钮没有自动设置权限的地方。我再试试看脚本得写法,呵呵4 ]+ o& y8 {; O* r  `
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:02:20 | 显示全部楼层
可爱的珊珊 发表于 2013-2-1 11:28 / u, B& b8 J5 U) }
在Designer中的chechkout模式下,直接选择按钮,然后删除即可。
- q; v  u2 p! V5 m, w7 P
我不是想要删除那个“除去”按钮。
( b# c, }4 x" |$ A$ [2 F' T而是要在选中了列表视图中的某条记录后,点击“除去”按钮的同时,对这条记录执行Delete操作,将这条记录彻底删除。0 p' O6 A% P3 I. ~! t( j
1 t- j4 F. i: `( \1 u# h
不知道有没有办法实现呢?

3 C3 e6 o4 s& K4 Q0 F. g, K) D
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:04:32 | 显示全部楼层
judyx 发表于 2013-4-23 14:45 " N' I* w8 l1 p
我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除 ...
9 r! o2 L3 a5 V! {* n9 B+ ^& A, K
我也有这样的一个疑问。不知道这个问题您解决了没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 10:48:47 | 显示全部楼层
本帖最后由 suty 于 2013-6-21 10:50 编辑
/ a& H. m% D  c4 H6 c( |  r
# b; e8 E0 [! s+ j父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。
3 e1 b! z. b- ^. v1 d而我想做的是通过“除去”按钮,彻底将子记录从数据库中删除。3 a1 o/ a3 ^; J/ ~# {

7 k* }( E. x# t4 R& @$ f. K. K先前看到这两篇帖子,好像都没有很好的解决这个问题。不知道有没有其他人做过这样的需求?这个问题可以解决吗?/ g. u7 ?, o; L! T6 A! {
父子控件中“除去”子记录的问题
6 r$ |8 ?- j# h8 e! t( h: [CQ7.0for eclipse客户端,除去脚本出错
! I, _9 H/ }; Y2 y
8 |+ J/ p% j  ~2 `4 b9 x  f- C9 p* x5 d
@懂你 @yunshan @可爱的珊珊 @shadowsphx @lkz @jiangmin  
回复 支持 反对

使用道具 举报

发表于 2013-6-26 23:10:32 | 显示全部楼层
本帖最后由 jiangmin 于 2013-6-26 23:14 编辑 1 a  r+ d; q8 N2 ]2 _4 I5 u  h
suty 发表于 2013-6-21 10:48 & }' z' o& ~" ?1 K1 p- y
父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。) _* \7 k2 G; n: J& O* O
而我想做的是通过“除 ...
  o* o4 F  G5 v5 N/ V" w
在试验环境中试了下的,我这边的试验环境如下 (CQ 7.0.1)$ l4 j+ p2 u+ j8 D, S$ l
记录类型 Project 和 记录类型 Team 是父子关系,在每个 Project 记录中会引用不同的 Team ( REFERENCE_LIST ) , 如截图
4 y/ ~5 A7 ~% G
6 a  p" @, f4 _/ e6 c' a& z基本策略是:, n9 C) p# ]( a: D# D! t3 q
1. 定义 Notification Hook , 在父记录删除子记录提交完成后,该 HOOK 判断父记录中引用字段的值的变化(也就是删除了什么)
' l: B/ G6 M- w" }( a% i  X$ Z2. 然后按照删除的子记录值来删除该对象
! o0 U& ~6 r1 O$ N  G
( l9 k7 X( \" {) b; @############
$ l$ @( P% ]7 z( j- ?+ d  ^  Notification Hook2 d& s$ d$ l8 V5 z2 H8 {
############6 T/ |1 A& B% ?! b4 G# {& N/ d
        my $session   =  $entity ->GetSession();) o- e" N4 I6 ~9 u

7 S, L: u) k2 o  ^8 s) o  \# f3 d        # 获取本次操作变化的字段' L/ A! U6 k% d! J% P0 J2 I
        my $fields    =  $entity->GetFieldsUpdatedThisAction();
# L* U) t6 H! s. X0 I* ^& \7 E: Q0 [; S3 R. O
        unless ( $fields->Count() == 0 ){- z5 o6 m' ]% v! V: A
8 @6 h) t( U8 N0 C
                for (my $i = 0; $i < $fields->Count(); $i++) {8 X+ }- {: C6 a2 |- q

- o. M+ j  V  |# N0 o! X* H; y                        my $field = $fields->Item($i);
4 O8 L  }+ W+ B+ _                        my $fname = $field->GetName();
. s( G- k% R, v: e$ M                        # Z* @  Q+ o0 d  ~% y4 I
                        # 因为我这边 REFERENCE_LIST 字段名为 team (引用子记录 Team)
& a, B; q+ n% G                        if ($fname eq "team"){5 n7 P9 S5 B- q* Q* }

6 Q4 L9 u$ X; t4 [6 i                                # 调用全局函数GetStrValue 获取初始值与变化后的值: C% P: s+ \& m- k! i. I
                                my @newValue = split /\n/, &GetStrValue($session, $field, $fname);. J, b, R) F- B2 L& _# A) [. @6 {2 g
                                my @oldValue = split /\n/, &GetStrValue($session, $entity->GetFieldOriginalValue($fname),$fname);        
0 s+ C5 M* [3 b9 d+ ]1 l' y* @. {4 |. `3 s+ p
                                # 比较2个数组,获取被删除的子记录6 z  F9 V* s! J& s* v4 i4 m& Z' @
                                foreach $old(@oldValue){
% v/ ]+ i6 H  o& C7 w/ d& k                                        my $j = 0;3 X& {8 e# I" Y7 \- C4 m
                                        foreach $new(@newValue){8 p& f+ n2 D: y2 o' X7 R
                                                if ("$new" eq "$old"){
% ^' {7 [/ `- r. g$ F                                                        $j = 1;
- T$ U) k, C* X* `- f                                                        last;
# H3 U8 B1 z& \7 {1 i4 ]                                                }! {1 d& h# q( m
                                        }
8 w* F4 e! ?/ h                                        if ($j == 0){                                                
( l5 _( d/ C% n& X                                                # 对于父记录中被删除的子记录(当前仅是删除父子关系阶段,调用全局函数DeleteEntity 以从数据库中彻底删除)
7 E4 \* ~) e/ u( I, k, \4 ]4 a                                                &DeleteEntity("Team","$old");. J+ W% ?! b& N* e
                                        }
& E  H: |- A$ I3 P& r4 [* B- H) I                                }
; d, @- v% E& \, o# |                        }: D( h0 a0 m3 a, u7 s2 A( C( G
                }
- t2 q. J; F# Z& W' p% V* M! n: X1 d- b" \# ~# W9 K+ }* t
        }
! {' o# T2 j6 b9 \, x, t: P  v
- f# H- i6 k; B+ o3 T3 b# V6 I) M) l1 R5 M3 B
################. U7 B" Z3 w4 D% r! w
   GetStrValue 全局函数
' r9 i' M) w: v/ F; Z& [) D################6 r' R+ r/ G; M0 ?& F! l

" c( R7 |& X; u  Nsub GetStrValue {
8 Y+ W8 D8 t, h5 c) Y        my ($session, $field, $field_name) = @_;1 ^# p% k7 n  V5 ~; V) {: u
        my $val = "";; E) |0 @- r0 p# k8 H8 c
        my $type = $field->GetType();3 u% G' B6 N  B; P
        if ($type lt 6) { # string, int, date, reference
0 S3 ^5 [4 [8 }4 l) x                $val = $field->GetValue();# k8 a" B8 z& P( y% t
        } 6 N: t/ Y  N0 N: b% m
        elsif ($type == 6) { # Reference_list# e6 z9 I* r: c7 e) `( b

/ b6 Q" p- R2 ]/ b# e                my $list = $field->GetValueAsList();
' c4 ^# o2 K$ Y8 ]6 p                foreach my $item (@$list) {+ F: v# |1 @; o; u- P% Y0 D
                                $val .= "$item\n";9 k6 ]* m$ P- X5 o0 W( o
                }0 {9 ~, }8 B6 C! M4 h) ?
        }
) }/ {' X# Z8 C  w        elsif ($type == 9) { # State
% Y2 D& k7 V: M9 }' k4 u9 O                $val = $field->GetValue();& w4 `! Z) w  E4 s, R/ _4 {
        }
" H. y* O" v) t. M/ v0 B        return $val;
. f0 `+ u8 U7 ~# e' j; B# \/ v) \% |}
7 B/ q# r% W0 |7 E7 j: u, u- C1 B) p" g" k

" y. Y, e- K) O/ ]* B% c5 y
. r9 K, F4 S3 D3 D. \7 c7 Q+ {################7 u3 c/ F/ o) {+ Y
   DeleteEntity 全局函数
5 ?% C# t, i# \3 \* K################
* j7 h& g% a# V6 E- W- O' W( }
$ T# E3 |/ j" t- Z; N  Tsub DeleteEntity{
. {. ]4 f4 ]# M6 V( `+ [0 K- {7 a) g. d8 w0 w1 n+ a" ?7 X  |
        my($entity_type,$entity_name) = @_;$ q" I, S! \. i5 o/ x7 {* |: L+ {

6 ?2 p: r3 S( Y" {9 o7 J        my $entity_del  = $session ->GetEntity("$entity_type","$entity_name");
8 W- |' ^8 r1 [) e( u5 [0 y0 _# H1 s0 x" }+ H5 v" d
        $session->DeleteEntity($entity_del,"Delete");3 w# R! r, u  V/ M# H  _: l
) e5 ^7 o. k. K; b2 k
}
" Z) V4 h( a1 i& G% u4 y  ?0 m* {1 {1 |& k: m

) P2 t3 L% I$ p7 i: a+ M0 r" I) i& N( T  ]1 ~8 N

本帖子中包含更多资源

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

x

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2018-10-19 15:59 , Processed in 0.091020 second(s), 10 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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