SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6004|回复: 10

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

[复制链接]
发表于 2013-1-30 11:37:24 | 显示全部楼层 |阅读模式
本帖最后由 suty 于 2013-7-10 14:15 编辑
, W" l- C3 \, i1 G! o+ |
8 _* M! N& L) ]) Z) ^/ S在“客户”这个列表视图中,有添加、除去、新建三个按钮,我现在去掉“添加”按钮,只需要“除去”和“新建”。
; i0 R: A& d$ f5 G" {" S现在想要实现:在列表视图里选中某位客户的记录,点击“除去”按钮后,不仅要在列表视图中将其删除,还要在数据库中实现彻底的删除。
  D( d5 Z" \+ V/ |3 B( z6 r请问各位大大这个功能可以实现吗?. ]) R+ Q% r  w. T  Q

本帖子中包含更多资源

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

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 5 k/ \% m$ E0 H  X: d4 O' p4 I: B
搭个车求助一下啊,表打我哦,如何设置除去按钮的权限?只想CM组的人能操作。 我也是用的shadowsp ...
+ J6 C3 Z( d( @
如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=# W# T4 |) X+ T4 v/ C. b
回复 支持 反对

使用道具 举报

发表于 2013-4-23 14:45:20 | 显示全部楼层
shadowsphx 发表于 2013-4-18 09:18
5 r  m- X" J- f2 G如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=8 }" h1 Q6 ?% P4 K
...

& k2 |! ]; e' \4 S5 T( o3 ~. O我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除去按钮没有自动设置权限的地方。我再试试看脚本得写法,呵呵
; B& C7 c: i1 D+ d
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:02:20 | 显示全部楼层
可爱的珊珊 发表于 2013-2-1 11:28
0 K* M) p3 L1 m, ?: p; V1 y在Designer中的chechkout模式下,直接选择按钮,然后删除即可。

: b. Q7 D+ m, K) h! M% R我不是想要删除那个“除去”按钮。
, z& B$ }- ]1 `而是要在选中了列表视图中的某条记录后,点击“除去”按钮的同时,对这条记录执行Delete操作,将这条记录彻底删除。6 J. d" ~7 X& i, O; _1 ^7 c7 p  [
9 S0 ]; P8 [: v, Z
不知道有没有办法实现呢?
# Q4 A8 `+ j4 t" u7 [6 f
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:04:32 | 显示全部楼层
judyx 发表于 2013-4-23 14:45
7 h: r2 d" }" {+ t我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除 ...
2 w  `) d) y& h, {0 K) y
我也有这样的一个疑问。不知道这个问题您解决了没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 10:48:47 | 显示全部楼层
本帖最后由 suty 于 2013-6-21 10:50 编辑
1 a8 v4 G* H* B7 B* K, o  Y
5 [' F% }& S# ]2 m  e: r5 \父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。
( i, X% I3 U8 {2 U3 ]而我想做的是通过“除去”按钮,彻底将子记录从数据库中删除。
/ |) I: O: N4 N. Q, r5 x) @* P% y% g2 m2 \  K8 n
先前看到这两篇帖子,好像都没有很好的解决这个问题。不知道有没有其他人做过这样的需求?这个问题可以解决吗?
& R3 U2 V7 \( `7 r6 h# [! _0 m父子控件中“除去”子记录的问题
9 }- ^2 j6 `! d' `2 t$ T2 w1 tCQ7.0for eclipse客户端,除去脚本出错
. [1 z  q% f7 i$ Y( g: S1 `+ w3 G- G* _

3 _- |0 d5 M& C: k@懂你 @yunshan @可爱的珊珊 @shadowsphx @lkz @jiangmin  
回复 支持 反对

使用道具 举报

发表于 2013-6-26 23:10:32 | 显示全部楼层
本帖最后由 jiangmin 于 2013-6-26 23:14 编辑 4 o+ r5 x$ k- W) K8 x; S- B
suty 发表于 2013-6-21 10:48 - l! Z$ r  s. V# r# `) U
父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。
( q* V( S; x. f而我想做的是通过“除 ...
) K8 x4 y/ _" l0 }. K
在试验环境中试了下的,我这边的试验环境如下 (CQ 7.0.1)! |* D. Z# O# J- i
记录类型 Project 和 记录类型 Team 是父子关系,在每个 Project 记录中会引用不同的 Team ( REFERENCE_LIST ) , 如截图
$ b, N) q9 |# ~: }2 \" z) e- A7 U5 }$ E' x
基本策略是:; \7 e" C3 v; G' Z
1. 定义 Notification Hook , 在父记录删除子记录提交完成后,该 HOOK 判断父记录中引用字段的值的变化(也就是删除了什么)! Z5 w9 U4 X/ |/ Z- f: c2 w
2. 然后按照删除的子记录值来删除该对象
' ^. s- |; C; `' C0 M2 G& c6 D5 B" I4 _- m* h! V
############
9 }8 E1 ^* E- U3 Z9 _( @) B( d  Notification Hook
+ {4 x6 c: u  f; [############
/ ~4 ]* s' g+ A! ~        my $session   =  $entity ->GetSession();
& t" P8 b  Z  B' H4 x# [
0 Z6 {  |& u  B# n        # 获取本次操作变化的字段
  i) B# x5 r. c6 P0 T6 C; V        my $fields    =  $entity->GetFieldsUpdatedThisAction();
8 v; ]$ d+ D, g1 @5 y  {  [4 b# c. {: V) `5 {; _$ p
        unless ( $fields->Count() == 0 ){
- h8 x$ |; |/ g
4 M6 z- y; _& \+ i& s, j2 }                for (my $i = 0; $i < $fields->Count(); $i++) {
! q/ ]3 a: l! r' h8 Z; K" Z% C6 B0 L3 m& l3 D, Y' p7 J- T
                        my $field = $fields->Item($i);+ r0 v. d% |, X6 a1 _9 S- ]
                        my $fname = $field->GetName();
6 R- b% _; n' H- g$ ~1 ]) G                        
$ G8 ?  p+ C! ?' C# B  M* F6 G+ M' d                        # 因为我这边 REFERENCE_LIST 字段名为 team (引用子记录 Team) , |/ D( l/ \5 A( t5 d: _7 ~
                        if ($fname eq "team"){
  Z( p: ~. S# x8 M5 x$ F2 ~9 y6 z# P$ E  F" K4 D
                                # 调用全局函数GetStrValue 获取初始值与变化后的值
9 C2 |- S& ]$ K' P: J) q                                my @newValue = split /\n/, &GetStrValue($session, $field, $fname);' @8 Q! T( C+ L- c; I6 J
                                my @oldValue = split /\n/, &GetStrValue($session, $entity->GetFieldOriginalValue($fname),$fname);        
8 Q! W2 \- Y6 X) m. r, ]1 \3 V/ V$ ?1 z
                                # 比较2个数组,获取被删除的子记录; r8 `6 }# t9 j# Z
                                foreach $old(@oldValue){
( h) v; ~  \! u5 w6 S                                        my $j = 0;
7 v/ `" q; e$ R0 y+ m) N  U                                        foreach $new(@newValue){+ B! C  b, y6 m! ~  j! ~
                                                if ("$new" eq "$old"){
6 T7 d5 \6 {" e4 l3 K+ i                                                        $j = 1;( h" s+ X! y- e# k9 b% Y
                                                        last;" d2 w5 k( B0 d9 K
                                                }1 Z' o0 _! L' }- {( |/ [
                                        }
. \; s, [& z2 G) h& I* B# Q                                        if ($j == 0){                                                
9 e- f% T; O! P4 f* Y1 E                                                # 对于父记录中被删除的子记录(当前仅是删除父子关系阶段,调用全局函数DeleteEntity 以从数据库中彻底删除)
9 E3 L! a2 M; C# N; N) O3 ?                                                &DeleteEntity("Team","$old");4 @4 K, q) Z' Q# V! [! A9 A$ O
                                        }( c1 |% t" |* g6 B0 a& Q! k% z1 L
                                }
& C# Z! m5 X+ [' Y( S' c' D                        }
1 Z  S4 S/ p6 v6 K3 S                }
/ H) }, a2 a/ u4 R; @' X6 {8 O; f: `2 f; W$ J2 E: r
        }3 a% {% A8 h% D* \

3 |/ U' ^8 V( q4 ?; I7 Q
8 J8 l& n! I8 R################
! ?. Q# c# I3 c9 x; y! g( e   GetStrValue 全局函数
5 Y2 {( L' b0 v# l5 }################
& b6 ?4 L) x8 U. p# o" {- w8 m' w8 b
sub GetStrValue {
5 N1 E2 Q( G$ s0 M5 u        my ($session, $field, $field_name) = @_;
5 w' @( N5 o; E1 W2 J6 J. i9 Y( [        my $val = "";0 U# F5 ^9 e9 _. I7 y) p8 ]$ ^
        my $type = $field->GetType();# }: W6 D: a+ a5 P: L4 F1 M
        if ($type lt 6) { # string, int, date, reference
' s* r8 z& D& }% r! |) \                $val = $field->GetValue();
" q/ L& J: l- a        }
- O0 B% C0 I4 A        elsif ($type == 6) { # Reference_list
0 f# T3 i) r* y) ]1 C
9 k2 n7 R/ N3 y( p8 j                my $list = $field->GetValueAsList();
2 g* p# a# c2 n7 Q; |* d                foreach my $item (@$list) {
0 p8 t, B' U: i; G                                $val .= "$item\n";3 L7 n& H7 @; m$ I  Z0 }
                }" T1 D1 ]! L5 k% N% f4 o
        } # O8 J# y; w8 j2 x  b0 E, _( y% H
        elsif ($type == 9) { # State3 j, K3 o- \. N- t9 F4 v+ ~
                $val = $field->GetValue();7 [( G. t3 y! W4 Z) k3 E' e& r
        }: J/ F: |. r" d1 N0 M
        return $val;4 H/ N0 R' @; v' K' u
}$ i- f6 O( F7 {/ _

4 n5 m6 J" c8 J5 b, t$ \; p% ~+ X* V- R# p7 Y' m/ A7 e  t% H

, c4 q5 x7 U* ?; C( c5 F- A################
4 v5 m" |, {( K- J   DeleteEntity 全局函数 0 n2 c2 ]& o8 w8 U1 ~" M
################( M' S1 K: B' w: I# I) q0 O5 N0 ]
' @: {  q: l7 V  x" s+ J
sub DeleteEntity{
9 f$ i* J, X$ l. e9 I
1 Q# ]) z# f% i; t+ c0 Q  z        my($entity_type,$entity_name) = @_;
5 \, t( z. V8 y8 ?; ?- g6 R& l# }+ B0 a, f( }) \0 E+ B
        my $entity_del  = $session ->GetEntity("$entity_type","$entity_name");
+ J7 o( R* U% E
9 G7 G4 U8 b( n        $session->DeleteEntity($entity_del,"Delete");
$ D* x3 y8 D8 W7 Z- Y. X
' y( K7 g7 E1 t% u' ]}
3 T+ l4 S( F! m  `8 W3 X6 E) S+ [+ `8 l4 S

! |) F+ v' R* `, i6 V9 J5 n
& r8 j9 w4 Q! ]7 f  ~

本帖子中包含更多资源

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

x

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-2-26 06:09 , Processed in 0.075212 second(s), 10 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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