一般的CMS(Content Manager System)中,不可避免的會涉及大量操作。比如顯示一頁資料,一個良好的設計都會加上大量刪除、批量推薦等操作。
在ASP.NET中,做這樣的大量操作非常簡單,以大量刪除為例,我們僅需要checkBox控制項用來多選,外加一個大量刪除按鈕。顯示資料這裡採用repeater控制項。
下面是我的工程中一段代碼:
aspx前台檔案代碼:
<table> <tbody> <tr> <thclass="th_CheckBox"></th> <thclass="th_Floor">樓層號</th> <thclass="th_Room">房間號</th> <thclass="th_ComputerNumber">電腦編號</th> <thclass="th_ProName">問題名稱</th> <thclass="th_ProType">問題類型</th> <thclass="th_ProDescription">問題描述</th> <thclass="th_Operate">操作</th> </tr> <asp:RepeaterID="UnProRepeater" runat="server"> <ItemTemplate> <tr> <td><asp:CheckBox ID="cdDelete" ToolTip='<%#Eval("id") %>' Text="" runat="server"/></td> <td><%# Eval("floor") %></td> <td><%# Eval("rmNumber")%></td> <td><a href='addUnFinishedPro.aspx?id=<%# Eval("id")%>'><%# Eval("cmNumber")%></a></td> <td><%# Eval("name") %></td> <td><%# Eval("typeName")%></td> <td><%# cutString(Eval("description").ToString(),15,"...")%></td> <td><asp:LinkButton ID="lbtnDelete"CommandArgument='<%# Eval("id") %>' OnClientClick="returnconfirm('真的要刪除嗎?')" OnClick="lbtnDelete_Click"runat="server">刪除</asp:LinkButton></td> </tr> </ItemTemplate> </asp:Repeater> </tbody> </table>
大家不要被這麼代碼嚇到了,真正有用的只有第一個<tr></tr>塊裡的<th class="th_CheckBox"></th>,目的是給單選框留出一列;第二個<tr></tr>塊裡的<td><asp:CheckBox ID="cdDelete" ToolTip='<%#Eval("id") %>' Text="" runat="server"/></td>,真正的顯示checkBox控制項。其中ToolTip屬性是為了攜帶記錄id,有了記錄id我們才能操作這條記錄。為啥用這個屬性呢?因為只有這個屬性最合適,讓人比較意外的是ASP.NET的checkBox竟然沒有value屬性,找來找去,只有ToolTip這個屬效能用來攜帶id了,而且使用者把滑鼠放到checkBox上還會顯示出記錄id,增加了程式的神秘感。把repeater控制項綁定資料之後,每條資料前都會多出一個單選框,這樣就達到目的了。作為例子,上邊這段代碼沒必要寫這麼多,但是為了給讀者一個完整的展示,還是把代碼寫全了。
在介面上再添加一個大量刪除按鈕,前台就搞定了,怎麼在大量刪除按鈕事件中刪除選中的項呢?
aspx.cs後台代碼:
protected void btnDelete_Click(object sender, EventArgs e) { bool result = true; //遍曆repeater控制項的itemtemplate模版 foreach (RepeaterItem item in UnProRepeater.Items) { CheckBox cb = (CheckBox)item.FindControl("cdDelete"); //根據控制項id獲得控制項對象,cdDelete是checkBox控制項的id if (cb.Checked == true) { //刪除操作,根據id刪除記錄,cb.ToolTip裡存放的就是記錄id } } //別忘了刪除之後要重新綁定資料的哦。。。。。 }
代碼中已經加上詳細的注釋,相信您一看即懂。
通過這個簡單的小例子,展示了ASP.NET通過repeater控制項和checkBox控制項進行大量操作,希望對大家的學習有所協助!