SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6703|回复: 10

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

[复制链接]
发表于 2013-1-30 11:37:24 | 显示全部楼层 |阅读模式
本帖最后由 suty 于 2013-7-10 14:15 编辑 # \0 O2 m' \! X; C

# a. B8 E. x# a+ I, p) [在“客户”这个列表视图中,有添加、除去、新建三个按钮,我现在去掉“添加”按钮,只需要“除去”和“新建”。
5 G$ S! t% K- Z/ @& o现在想要实现:在列表视图里选中某位客户的记录,点击“除去”按钮后,不仅要在列表视图中将其删除,还要在数据库中实现彻底的删除。
8 o+ o# @0 Z+ |* ?请问各位大大这个功能可以实现吗?
; H* [& g3 D) C4 j! R

本帖子中包含更多资源

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

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
& N! i6 e: ~' P3 \2 V搭个车求助一下啊,表打我哦,如何设置除去按钮的权限?只想CM组的人能操作。 我也是用的shadowsp ...

8 R" Z! K/ w7 t8 h5 ?. J1 g如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=
+ T2 n5 ~$ X6 z& }
回复 支持 反对

使用道具 举报

发表于 2013-4-23 14:45:20 | 显示全部楼层
shadowsphx 发表于 2013-4-18 09:18
" A0 h) I; s8 \0 {如果你的按钮关联上了控件,那么把控制的权限设置了,或许也能影响到按钮上,我没做过实验=。=/ b' q% F- m+ g* P6 P6 i* Y3 I
...

: ~& U1 h+ ]/ r" E我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除去按钮没有自动设置权限的地方。我再试试看脚本得写法,呵呵+ u0 S) b9 i  p" T$ o5 ^- D
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:02:20 | 显示全部楼层
可爱的珊珊 发表于 2013-2-1 11:28 6 L4 P- Y! u5 ^" s9 Q
在Designer中的chechkout模式下,直接选择按钮,然后删除即可。

5 z; }1 ]' c/ p7 x) ^1 @我不是想要删除那个“除去”按钮。
" Q4 u3 P3 u& b: u而是要在选中了列表视图中的某条记录后,点击“除去”按钮的同时,对这条记录执行Delete操作,将这条记录彻底删除。
6 C/ P1 s; J+ Z, |+ m5 y
. R( N1 K/ w) n1 ^0 m不知道有没有办法实现呢?
# a$ z8 E7 x, Q0 k( B, \. g
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 19:04:32 | 显示全部楼层
judyx 发表于 2013-4-23 14:45
9 W$ r  ~  L* L: O2 O" K我试了,控件的submit权限设置了,新建按钮是按照这个权限设置的,但是除去按钮权限完全没有控制,所以除 ...

) G0 N5 m( ~/ }% S/ w我也有这样的一个疑问。不知道这个问题您解决了没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 10:48:47 | 显示全部楼层
本帖最后由 suty 于 2013-6-21 10:50 编辑 - B8 u. E; n6 r# ^

# x! b4 x. [3 c, ~, A9 Q父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。
* R1 t. p6 t: j3 x3 T* `而我想做的是通过“除去”按钮,彻底将子记录从数据库中删除。" l6 D5 V* ?8 I. h  e! N
  C* U; b) l% V5 K: g
先前看到这两篇帖子,好像都没有很好的解决这个问题。不知道有没有其他人做过这样的需求?这个问题可以解决吗?
/ J! C) n# t1 F' g+ c7 ?: F父子控件中“除去”子记录的问题6 E* b' y/ f/ l
CQ7.0for eclipse客户端,除去脚本出错5 u$ T9 g$ I  ^% U' w

, A. N0 U  U) {8 t' o
# y5 b7 x6 C- g@懂你 @yunshan @可爱的珊珊 @shadowsphx @lkz @jiangmin  
回复 支持 反对

使用道具 举报

发表于 2013-6-26 23:10:32 | 显示全部楼层
本帖最后由 jiangmin 于 2013-6-26 23:14 编辑
/ \6 b* w4 K# d2 o: [3 D) `+ s
suty 发表于 2013-6-21 10:48 ) y4 m" l% e1 m2 {* t3 y' A
父子控件中的“除去”按钮只是将子记录从父记录的List中删除,而非从数据库中删除。$ @9 d: W8 s7 t) T
而我想做的是通过“除 ...
/ J# d; [  _6 C( o
在试验环境中试了下的,我这边的试验环境如下 (CQ 7.0.1)
8 |+ w, J  w# \) L; s记录类型 Project 和 记录类型 Team 是父子关系,在每个 Project 记录中会引用不同的 Team ( REFERENCE_LIST ) , 如截图% z$ ]4 s/ V* U' x/ h3 p3 J4 I& o$ f. P
. W6 S! M- l0 O" {/ w* n/ D
基本策略是:" e. }/ Y+ p9 A: L$ j* `9 M) K  }4 w
1. 定义 Notification Hook , 在父记录删除子记录提交完成后,该 HOOK 判断父记录中引用字段的值的变化(也就是删除了什么)  n  ^# f" E1 Q3 E" g
2. 然后按照删除的子记录值来删除该对象
# ~4 c( L: v! B+ a8 s6 R+ K9 s/ ]4 Q+ m+ [$ ~- Z
############
" ~9 P2 a" L" w' h, G, ?3 A6 Z  Notification Hook
) {2 r3 l) L' u% g6 d############3 [- G7 ]% a- V! M
        my $session   =  $entity ->GetSession();( C1 m, S) {& m7 n0 L& l3 ~/ i

1 K' [, h8 f3 U& h6 Y        # 获取本次操作变化的字段$ G. S$ z1 m2 t$ Y4 {# Z6 V
        my $fields    =  $entity->GetFieldsUpdatedThisAction();, O4 Z. D* i6 O1 F: b4 {

1 q! n( ^2 a3 t7 R2 v2 d        unless ( $fields->Count() == 0 ){  s5 @, S* c3 ^3 I1 Q. q
/ I: D7 A6 l. t3 l1 A
                for (my $i = 0; $i < $fields->Count(); $i++) {
! C+ Q2 H; m) ]0 M% X9 f2 L9 S: Q, d/ g/ x
                        my $field = $fields->Item($i);. g2 S* u9 x8 H; _& U& ?
                        my $fname = $field->GetName();
$ d9 u# p, F1 p% |1 P1 X; }                        : A) _8 T3 t0 y, N8 M
                        # 因为我这边 REFERENCE_LIST 字段名为 team (引用子记录 Team)
! {" ]$ S' W# x" p" G                        if ($fname eq "team"){
8 @2 ?+ W1 Q# R8 X+ \* q- b2 R3 }
  D6 y& {4 C) |5 u3 ^& \                                # 调用全局函数GetStrValue 获取初始值与变化后的值
7 T- s" O% K0 V                                my @newValue = split /\n/, &GetStrValue($session, $field, $fname);
9 q. x- [6 e; F  ~                                my @oldValue = split /\n/, &GetStrValue($session, $entity->GetFieldOriginalValue($fname),$fname);        
# [2 c6 C% y2 E1 R6 n9 p3 s' |. s2 s* Q+ y
                                # 比较2个数组,获取被删除的子记录
& z% |% @+ S% C/ U: m# a( \$ \                                foreach $old(@oldValue){6 |$ E* ^( ^/ l0 d8 d2 z- t
                                        my $j = 0;
2 t5 Z* x  g  K  d7 M" U; C2 T$ g" j                                        foreach $new(@newValue){8 ]- Q: `* M, d: P/ |/ u1 q
                                                if ("$new" eq "$old"){, n- s7 ^" E! m8 E: |8 b9 g
                                                        $j = 1;
) |4 V( F) U/ P* b4 ?  j" R                                                        last;& W! F5 V( {1 b) w: {3 j" V, e, g
                                                }
, d  a& d) ^" s# z3 e                                        }
) T* M' [7 w% X2 i                                        if ($j == 0){                                                
9 w! o/ O- x* Q* K$ ]) Z& |                                                # 对于父记录中被删除的子记录(当前仅是删除父子关系阶段,调用全局函数DeleteEntity 以从数据库中彻底删除)
: y) b- v1 d$ `# O                                                &DeleteEntity("Team","$old");
: c: }; n* h$ Y$ W& k) D8 c                                        }' Q/ A, ?3 j4 _5 e# h7 v
                                }, u5 L: c9 y2 D# S" W/ M4 U
                        }) |5 [+ F: _% }4 f" S* E
                }
4 i* v& c; i% t& L  R8 N: y+ b9 g9 Z( F. }
        }8 H0 c+ x4 y, M' B$ |7 z
8 V! q) q% P. ~

* Q: a4 L- J5 T0 M################) `! F% p7 I1 E
   GetStrValue 全局函数
3 @; g/ j# s$ v! w% e" y, V################
4 z. r% _, h; U: n
2 j( n; Q/ \. c5 U9 bsub GetStrValue {
& c! W. H$ `0 D0 G: u/ ?' T6 M        my ($session, $field, $field_name) = @_;; g, v, O2 T1 C* W' n) U3 k& M
        my $val = "";0 b9 z* G  d3 @
        my $type = $field->GetType();
; q0 `9 Q8 j+ j% ^5 @. m: I        if ($type lt 6) { # string, int, date, reference4 V- k& Q- u( F- o9 K
                $val = $field->GetValue();9 ~: n. T1 g5 o, S1 }: [+ {
        } " ]# ^: `2 w3 m3 _6 I. ~
        elsif ($type == 6) { # Reference_list
4 d$ O* ^+ O1 G2 n& g
+ G* u/ r& S" G& W5 d                my $list = $field->GetValueAsList();. r6 J4 E( v2 y5 h
                foreach my $item (@$list) {
1 l2 Z- W& t. e# Q0 p                                $val .= "$item\n";
) U- [  J& i# j7 V8 n                }
" p' U' U9 P2 y        }
  s9 t5 }3 ^' S1 B) y        elsif ($type == 9) { # State
' ~+ D' e0 z5 P8 e) T( R( c% K                $val = $field->GetValue();
, R( S$ y6 I: }+ ^        }
, Q$ y0 \$ o& u. q  ^) A# \1 _        return $val;9 K  P8 G& L+ v0 M# P5 E0 L* R
}
6 y3 g9 B& h  C! N0 I& \5 C
7 `! N  o5 W3 n: T' ~  b$ x$ b# a
8 c7 f4 s3 `/ u, o
################
/ D' d8 [8 ~( ?& M% F! c   DeleteEntity 全局函数
. H0 F0 g  E/ I0 J3 N################/ U  T- f' b0 n- k% B4 y

. n' ~1 w: g* G( V0 H2 Fsub DeleteEntity{
6 X  p! y, L- x- c9 n6 A3 a- P6 Z. H
        my($entity_type,$entity_name) = @_;
  |' r! P% x# W* ~
4 s' G' {0 ], S* U& a9 r3 d        my $entity_del  = $session ->GetEntity("$entity_type","$entity_name");
1 m  e! @! r, t% g) j* N
3 q2 t2 L7 d% y0 s, r9 n! C# L  z        $session->DeleteEntity($entity_del,"Delete");% R7 R/ }  u$ E3 C! F. z

# A% o" f- b2 P  v; e# H}
( ~; C% _9 K9 C/ o/ j& v: @5 J! T- e0 ?- j( H1 U

" {, Y( q; Q; r1 Z5 u( H; P2 C2 h
- {3 o- h% S1 c- H2 P2 w9 H

本帖子中包含更多资源

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

x

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2018-12-15 04:38 , Processed in 0.082384 second(s), 10 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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