SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6244|回复: 10

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

[复制链接]
发表于 2013-1-30 11:37:24 | 显示全部楼层 |阅读模式
本帖最后由 suty 于 2013-7-10 14:15 编辑
" P) q5 i7 ^) o, e7 g
( V# q7 z* K) J% R. Z8 L在“客户”这个列表视图中,有添加、除去、新建三个按钮,我现在去掉“添加”按钮,只需要“除去”和“新建”。* l5 m4 f5 p4 _' \1 K8 K0 k* P
现在想要实现:在列表视图里选中某位客户的记录,点击“除去”按钮后,不仅要在列表视图中将其删除,还要在数据库中实现彻底的删除。$ K/ c* r$ A2 f$ B& w3 x
请问各位大大这个功能可以实现吗?
2 T+ e: V/ e; a" V1 |0 |, f

本帖子中包含更多资源

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

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
" ]( V: S7 W5 `, U1 Z2 B搭个车求助一下啊,表打我哦,如何设置除去按钮的权限?只想CM组的人能操作。 我也是用的shadowsp ...

& Z" }! A& ^* y+ P' L1 W如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=
5 G4 d9 t3 C- N6 p0 q  T
回复 支持 反对

使用道具 举报

发表于 2013-4-23 14:45:20 | 显示全部楼层
shadowsphx 发表于 2013-4-18 09:18
( k% v  P& s/ ^8 P. g  Z如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=
# L- z& W% [4 z, E( f- n) Z, n% M ...
; O2 I! l6 h+ x1 P& H/ [! y0 V
我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除去按钮没有自动设置权限的地方。我再试试看脚本得写法,呵呵
& B, J3 ?) v' ]' t; ]9 f9 b' k
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:02:20 | 显示全部楼层
可爱的珊珊 发表于 2013-2-1 11:28 ) K0 z. {8 t4 Q; F7 P( h. J
在Designer中的chechkout模式下,直接选择按钮,然后删除即可。

6 ?% S% v. Y& e9 P8 j; p我不是想要删除那个“除去”按钮。
/ |: k1 ^6 Z1 A$ `( D; k; d! U而是要在选中了列表视图中的某条记录后,点击“除去”按钮的同时,对这条记录执行Delete操作,将这条记录彻底删除。
5 j7 m+ }. ~4 Y: m, H4 u
" g' ^# E  h0 e* z( u  z1 A不知道有没有办法实现呢?
$ ]' ?/ }# Z' q1 z& _
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:04:32 | 显示全部楼层
judyx 发表于 2013-4-23 14:45 ; m/ g: I+ P, A! M# p6 E( g7 j
我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除 ...
7 J" U& J8 p% T- T) d
我也有这样的一个疑问。不知道这个问题您解决了没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 10:48:47 | 显示全部楼层
本帖最后由 suty 于 2013-6-21 10:50 编辑
- W& U! ~, v, |* K/ e, I* b6 @/ ]- x
父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。. S4 h5 {/ F5 Q2 S8 Z1 h. K
而我想做的是通过“除去”按钮,彻底将子记录从数据库中删除。/ ^7 v: j! |* O2 J4 Y& c
' R0 U7 R: d5 }3 \4 S9 Z! ]1 A4 J- [
先前看到这两篇帖子,好像都没有很好的解决这个问题。不知道有没有其他人做过这样的需求?这个问题可以解决吗?
3 b# }) X, \  d! Z: g父子控件中“除去”子记录的问题
: s* O( O* H/ [% }7 p$ Z8 q8 }CQ7.0for eclipse客户端,除去脚本出错, v  z& Q. b' [& J* ]  |
& Y3 U1 S. s3 F4 \

! P& n3 }. d! L8 q5 ?  |+ O4 J/ r+ D7 q@懂你 @yunshan @可爱的珊珊 @shadowsphx @lkz @jiangmin  
回复 支持 反对

使用道具 举报

发表于 2013-6-26 23:10:32 | 显示全部楼层
本帖最后由 jiangmin 于 2013-6-26 23:14 编辑
' N+ U% E5 A4 Z) H$ ]% K
suty 发表于 2013-6-21 10:48
. U4 H* T6 A+ o/ Q& v5 X父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。! e: K) R5 N2 _
而我想做的是通过“除 ...

9 w9 {- I2 u. A9 g6 q1 h3 a5 i" U7 _在试验环境中试了下的,我这边的试验环境如下 (CQ 7.0.1)
% Q2 _9 F) E2 m% r- Y" s记录类型 Project 和 记录类型 Team 是父子关系,在每个 Project 记录中会引用不同的 Team ( REFERENCE_LIST ) , 如截图
' z( X0 b: J. r! ^
3 C1 h7 ?& y* J* b2 {7 H, S& o基本策略是:! R. p( L% R) p2 W. |! E7 T& a/ R
1. 定义 Notification Hook , 在父记录删除子记录提交完成后,该 HOOK 判断父记录中引用字段的值的变化(也就是删除了什么)- t0 c: O$ x' P7 g" U
2. 然后按照删除的子记录值来删除该对象
% k' R+ K6 P# W. i) K  ~* P6 w* t3 \  w2 |* w
############
% r3 A% Z( Q1 O& y! [3 F  Notification Hook
% {' h" }9 C- X4 j3 {  d############
6 p( E/ C, F( T" ]7 t9 N9 y        my $session   =  $entity ->GetSession();
" B' v. L9 K9 `( B! O. J  x# S3 ^2 U3 J! H' `+ R$ w: b4 Q; k; H
        # 获取本次操作变化的字段! R3 v6 C! c) S) r% F
        my $fields    =  $entity->GetFieldsUpdatedThisAction();
4 w/ _% G& x5 ^3 o8 e1 D
% ^& V6 n) U2 Y' H; \        unless ( $fields->Count() == 0 ){; ]0 B7 G2 s  Z/ ?; [: Z) X
# f2 J: u1 _" C/ |
                for (my $i = 0; $i < $fields->Count(); $i++) {
, M/ H: H+ c" u" S
9 p6 T, n7 M1 T5 [# @! Q: \1 q) K                        my $field = $fields->Item($i);  M( d4 P$ |6 w
                        my $fname = $field->GetName();! l) f3 S, r. n: q9 y3 a+ X: N
                        
) c8 `+ }% I& s. O, j& V- B                        # 因为我这边 REFERENCE_LIST 字段名为 team (引用子记录 Team) 6 C0 @! W% a' n9 p8 s# U; l5 Z% s
                        if ($fname eq "team"){
6 _- {" l7 N! @8 ]1 s6 V! n8 u( G4 M
                                # 调用全局函数GetStrValue 获取初始值与变化后的值- h) X; E: W7 i& l; N; I
                                my @newValue = split /\n/, &GetStrValue($session, $field, $fname);' @2 u' n; _4 l/ ]) G9 J; U8 m
                                my @oldValue = split /\n/, &GetStrValue($session, $entity->GetFieldOriginalValue($fname),$fname);        
  h: q6 n: O+ Q- ~- A
9 o/ o2 R' P; {                                # 比较2个数组,获取被删除的子记录% K" j- v( e+ a0 u- `! c3 Z& T3 E
                                foreach $old(@oldValue){
$ [' @7 `( Z# a' s                                        my $j = 0;
* W+ o$ p  _2 T" m* }7 }                                        foreach $new(@newValue){
; F1 c, ?% J# h- u# B3 P                                                if ("$new" eq "$old"){
, j0 ]/ d! _7 d# ^# N6 v$ u& m                                                        $j = 1;# G: g0 I2 l+ b
                                                        last;- A" O+ j# [: I2 X
                                                }
9 Z# ~# c; f1 _2 J5 v+ [                                        }
0 W2 ^6 |/ Y4 V) ?  L8 f# i                                        if ($j == 0){                                                ' P9 p' o# t( ?
                                                # 对于父记录中被删除的子记录(当前仅是删除父子关系阶段,调用全局函数DeleteEntity 以从数据库中彻底删除)
7 A7 I7 s5 A7 b, i  b# @4 X                                                &DeleteEntity("Team","$old");
6 }3 F/ C2 o  t, i, s                                        }0 q4 Q) U. N0 d% k
                                }
5 Z  p( p! O! q/ A/ r0 g+ L) a' f                        }8 G# \3 d. r: y) }; p$ a, i
                }
* i3 n7 ]) m5 }  N
4 g6 ^8 N$ ]8 G! a) V$ x4 m        }
! k9 v+ F/ `( H+ Y$ v5 b( X' E/ j1 U, I' _  B
# j5 I, n% f: R# I% ^" [
################4 ^! u" p* E1 Q% ?( }
   GetStrValue 全局函数 + f% V# E, V7 I. K0 w- d6 d
################0 I& ?. k3 T3 T5 C2 u8 \5 S
# ^$ V7 p) g% E& W# S* ?& F1 t
sub GetStrValue {" q/ J, K: o( j& I
        my ($session, $field, $field_name) = @_;. U9 {5 ?, i+ G  ?" H" s" O
        my $val = "";  `7 j9 B5 l6 m3 T
        my $type = $field->GetType();
! D% p/ v3 _0 ^  ~" R! S6 `- u        if ($type lt 6) { # string, int, date, reference4 M1 f0 B$ X. L) e/ [1 Q3 s
                $val = $field->GetValue();
! R0 v2 `5 ~* t$ l        }
7 @. C$ q0 v  k+ q; ?        elsif ($type == 6) { # Reference_list
" y8 C5 D4 Q! y/ i  }1 L. ~' d2 l8 \( m, ~, `( u+ q* n
                my $list = $field->GetValueAsList();8 G/ P& ^5 \+ ~
                foreach my $item (@$list) {1 O" m3 L2 Z3 U7 H
                                $val .= "$item\n";
2 o5 V& C! J8 H. Q6 f* H                }% `& A+ j% t( q8 u" s
        } + [8 ^* p/ w6 R4 s
        elsif ($type == 9) { # State
$ a" q& v  Z9 `                $val = $field->GetValue();
" D' W8 \+ b: w- q0 V* W1 F8 r* `        }
( e* D2 _5 b* K; H8 c: u7 s        return $val;
2 M. \* p% B; h7 t; i( [% U}- I; o% g) f* `7 h3 u1 ]) k& m; A

5 r  M2 D9 C5 g$ y9 }! p. m- H$ M
3 x, n8 V% l  [% t' \6 l7 ~# v
################9 v% T# r9 k! p
   DeleteEntity 全局函数 3 t7 I1 s9 e: {* Y/ b
################- R9 P. S/ N. j, f% ~2 Z! p3 t1 D& {  I
% w1 a& N8 D8 Q; |& {
sub DeleteEntity{
9 C$ W  ], b4 V
# a0 D7 W& e: F  ^" s' V0 T% ?        my($entity_type,$entity_name) = @_;
# e, r6 H3 N* s4 s6 Y# i) ~3 s4 @: I  p. P  M
        my $entity_del  = $session ->GetEntity("$entity_type","$entity_name");
" C) `! l1 u8 F2 \2 N
# J8 j8 w; n8 X  T! T, _+ T5 h# O, d        $session->DeleteEntity($entity_del,"Delete");
7 b) }* x- t# Q% _& \9 k: v% _9 T- H. M
}2 Q, Y5 G" g  q$ {

2 @* @0 A4 X' G# ]5 ]' X: {! w  r: E5 u% v  z. t" U) m! u, G
" I- e8 P8 I; S: R

本帖子中包含更多资源

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

x

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-4-25 11:24 , Processed in 0.075129 second(s), 10 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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