参考下图来理解标题:
即是说模块被分配之后,不能让用户再选择来分配。
分析:模块是存储在一张表中。从数据库读取出来,绑定在checkboxList上。分配的数据,是存在另一张表中。这样子数据库有2张表存储这些数据。Ok,为checkbox list准备的数据源:
上图中IsDistribution是在两个张均不存在的字段,是在SELECT时,我们添加上去的。它是根据分配后的表的数据来判断,分配后为1,没有分配的为0:
那在数据库怎样判断呢?使用表关联即可。先这样子,使用LEFT JOIN :上图中的#um即是第二张分配表,如果没有被分配的,外键值为NULL。um.[Module_nbr] as [IsDistribution]只要判断NULL即可。如果为空即是没有被分配的,我们再改一下SQL语句:有了数据源之后,在ASP.NET MVC的Razor就可以这样去写了:
好了,超简单的实现方法。
最终的效果: