Repeater控件使用总结
以前喜歡用gridview來顯示數據,在面試一家外包公司時,他們對gridview嗤之以鼻,說:“微軟很多自己的控件都不用,控件只是為了入門,我們只用repeater”,我不知道gridview和repeater誰更強大,但都了解一下不是壞事,其中也不全是Repeater的總結,也包括javascript等。
使用repeater可以很方便的綁定數據到表格,到控件的屬性,這對于數據的每一行處理來說至關重要,比如說有一行數據,后面有一個刪除按鈕,可以將這行數據的主鍵綁定到刪除按鈕的CommandArgument上,在repeater控件的ItemCommand事件上來處理這些事情。
<td> <asp:Button ID="btnAuthorized" Text="取消授權" runat="server" CommandName="Authorized" CommandArgument='<%#Eval("Id") %>' /> </td> <td> <div onclick="javascript:return Del()"> <asp:Button ID="btnDel" Text="刪除" runat="server" CommandName="Del" CommandArgument='<%#Eval("Id") %>' /></div> </td>ItemCommand事件
protected void repUnAuthorized_ItemCommand(object source, RepeaterCommandEventArgs e){try{if (e.CommandName == "Authorized"){long Id = long.Parse(e.CommandArgument.ToString());//do something }else if (e.CommandName == "Del"){long Id = long.Parse(e.CommandArgument.ToString());//do something }}catch (Exception){throw;}}遍歷數據也很方便,但是要注意一點,在repeater里的服務器端控件需要調用FindControl方法才能得到
protected void btnAllDel_Click(object sender, EventArgs e){try{for (int i = 0; i < repUnAuthorized.Items.Count; i++){CheckBox chk = (CheckBox)repUnAuthorized.Items[i].FindControl("chk");if (chk.Checked == true){Button btnDel = (Button)repUnAuthorized.Items[i].FindControl("btnDel");long Id = long.Parse(btnDel.CommandArgument.ToString());//do something }}}catch (Exception){throw;}}能夠遍歷數據,能夠控制每一行的行為,完成一般的需求綽綽有余,并且樣式布局完全可控,美中不足就是沒有EmptyTemplate,當數據為空時,沒有友好提示,但是,上帝為你關上了一扇門必定打開一扇窗,當數據為空時,我們有更加巧妙的方法
<FooterTemplate><tr><td colspan="12"><asp:Label ID="lblNoData" runat="server" Visible="<%#repUnAuthorized.Items.Count==0%>"Text="沒有您需要的數據!"></asp:Label></td></tr> </FooterTemplate>這樣我們就能友好的提示了
關于一些友好的界面,比如說對于刪除操作,很可能造成誤刪的情況,需要在刪除前確認,這些東西如果放到服務器端也能實現,但是javascript就沒有存在價值了,對于確認之類的操作確實可以放到客戶端,而對于校驗,客戶端可有可無,但是服務器端必須有,想起不知誰說的一句話“永遠不要相信客戶的輸入”。
function Del() {if (confirm("確定要刪除?")) {return true;}else {return false;}}實際運用
<div style="float: left;" onclick="javascript:return Del()"> <asp:Button ID="btnAllDel" Text="刪除" runat="server" OnClick="btnAllDel_Click" /></div> </div>當返回位false的時候,btnAllDel是不會被點擊到的,很強大,就總結到這里。
?
?
?
轉載于:https://www.cnblogs.com/HelloMyWorld/archive/2013/01/25/2876251.html
總結
以上是生活随笔為你收集整理的Repeater控件使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 辞旧迎新2013
- 下一篇: jsp基础语法【05】_跳转指令