把多级不确定的项目类别遍历出来(图文码并茂)

我今天就是类似于这个效果图给遍历出来需求:是要把不确定的多级分类遍历成表格。并不是多复杂却花了我几乎三个钟头,搞得我纠结不已,感觉应该有更简单的方法,就抛砖引玉吧。

别看下面的代码不是很多,这可是我旧的代码太多,我自己都搞不清了的情况下狠心都删了再重新做的。大概三个钟头才整出来的。

1 <!--项目分类 -->
2 <table>
3 <%
4 //得到第二级分类的分类名称集合
5   var item1s = ZBProject.Models.DBHelp.GetItems("项目分类");
6 //可能这里很奇怪,为什么定义了个无意义的item3sList呢,
7 //其实是为了扩大更获取它的范围,比如你在一个foreach里定义了,出了那个foreach就获取不到了,而之所以给他个无意义的item3sList值
8 //是因为此时尚且不知道item3s的值,var类型又必须给它赋值,所以如此。
9   IList<string> item3sList = new List<string>();
10 var item3s = item3sList;
11 //遍历行
12   foreach (var item1 in item1s)
13 {
14 %>
15 <tr>
16 <td>
17 <%=item1 %>
18 </td>
19 <td>
20 <%
21 //得到第二级分类的分类名称集合
22 var item2s = ZBProject.Models.DBHelp.GetItems(item1);
23
24 foreach (var item2 in item2s)
25 {
26 int item3sCount = 0;
27 item3s = ZBProject.Models.DBHelp.GetItems(item2);
28 if (item3s.Count == 0)
29 {
30 %>
31 <input type="checkbox" name="ProjectType" value="<%=item2 %>" /><%=item2%>
32 <%
33 } //if结尾
34 else
35 {
36 %>
37 <table>
38 <tr>
39 <td>
40 <%=item2 %>
41 </td>
42 <%foreach (var item3 in item3s) //遍历第三级分类集合
43 {
44 %>
45 <td>
46 <input type="checkbox" name="ProjectType" value="<%=item3 %>" /><%=item3%>
47 </td>
48 <%
49 } //循环第三级分类结束
50 %>
51 </tr>
52 </table>
53 <%
54
55 } //循环二级分类下的第一个else结束
56
57 } //循环二级分类结束
58 %>
59 </td>
60 </tr>
61 <% } //循环第一级分类结束
62 %>
63 </table>

再附上那个代码里用了多次的GetItems方法的代码。

1 public static IList<string> GetItems(string typeName)
2 {
3
4
5 var item= from zBProType in db.ZBProType
6 where zBProType.TypeParentId == (
7 (from z in db.ZBProType
8 where z.TypeName == typeName
9 select z.ID).First())
10 select zBProType.TypeName;
11 return item.ToList();
12
13 }

最后再展示一下更简单更真实的局部效果图吧。

反思:为什么一个功能我花了三个钟头才整出来呢?如果是你们看到下面的效果图,你们的思路是什么呢?期待讨论,共同进步。。。

..
原文地址:https://www.cnblogs.com/lanyueer/p/1970197.html