歡迎大家來討論,修改,一定虛心接受。

1.為什麼使用Repeater控件?

  關於把從數據庫讀取的數據綁定到前台頁面,我們可以使用DataGrid、DataGridView以及Repeater來佈局,三者均可以直接綁定DataTable中的字段,但是對於特殊的表格,如需要跨行或跨列顯示的數據,則需要重畫一個table,然後再綁定數據。

2.Repeater控件之好處

  我們可以自由的定義Table的表頭、表身和表尾。

3.Repeater控件一些基礎設定

  例:以下例子展示了如何對Repeater控件進行綁定,并實現在table中實現編輯和更新數據行的操作

html端代碼:

<asp:Repeater runat="server" ID="reportRepeater" OnItemCommand="reportRepeater_ItemCommand"
OnItemDataBound="reportRepeater_ItemDataBound">
<HeaderTemplate>

<table>

<tr><th></th>

<th>用戶ID</th>

<th>用戶名</th>

<th>籍貫</th>

<th>民族</th></tr>

</HeaderTemplate>

<ItemTemplate>

<asp:Panel ID="plItem" runat="server">

<tr><td><asp:ImageButton ID="imgInvEdit" CommandName="EDIT" ToolTip="編輯" CommandArgument='<%#Eval("userID")%>'

ImageUrl="../Images/edit1.gif" runat="server" Visible="false" />

<asp:ImageButton ID="imgInvDelete" CommandName="DELETE" ToolTip="刪除" CommandArgument='<%#Eval("userID")%>'
ImageUrl="../Images/delete.gif" runat="server" Visible="false" /></td>

<td><%#Eval("userID")%></td>

<td><%#Eval("username")%></td>

<td><%#Eval("birthplace")%></td>

<td><%Eval("nationality")%></td><tr>

</asp:Panel>

<asp:Panel ID="plItem" runat="server">

<tr><td><asp:ImageButton ID="imgInvUpdate" CommandName="UPDATE" ToolTip="更新" CommandArgument='<%#Eval("userID")%>'

ImageUrl="../Images/update.gif" runat="server" Visible="false" />

<asp:ImageButton ID="imgInvCancel" CommandName="CANCEL" ToolTip="取消" CommandArgument='<%#Eval("userID")%>'
ImageUrl="../Images/cancel.gif" runat="server" Visible="false" /></td>

<td><%#Eval("userID")%></td>

<td><%#Eval("username")%></td>

<td><%#Eval("birthplace")%></td>

<td><%Eval("nationality")%></td><tr>

</asp:Panel>

</ItemTemplate>

<FooterTemplate>

</table>

</FooterTemplate>

C#後端代碼:

protected void Page_Load(object sender, EventArgs e)
{

if(Page.IsPostBack)

{

BindData();

}

}

protected void BindData()

{

string sql = "select * from user";

DAL.DAL dal = new DAL.DAL();

DataTable dt = dal.ExecuteDataSet(Properties.Settings.Default.DBWF, sql).Tables[0];

reportRepeater.DataSource = dt;

reportRepeater.DataBind();

}

protected void reportRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)

{

switch (e.CommandName.Trim().ToUpper())
{
case "EDIT":
{
id = e.CommandArgument.ToString();
break;
}
case "UPDATE":

{

//更新數據庫

break;

}

case "CANCEL":

{

id="";

break;

}

case "DELETE":

{

//從數據庫刪除

break;

}

//數據綁定

BindData();

}

protected void reportRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)//Item綁定時可以在此做一些操作

{

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)//
{

System.Data.DataRowView record = (System.Data.DataRowView)e.Item.DataItem;
string userID= record["userID"].ToString();
if (userID.Equals(id))//當點擊不同的按鈕時對Pannel控件進行隱藏和顯示,達到在table內編輯行的效果
{
((Panel)e.Item.FindControl("plItem")).Visible = false;
((Panel)e.Item.FindControl("plEdit")).Visible = true;
}
else
{
((Panel)e.Item.FindControl("plItem")).Visible = true;
((Panel)e.Item.FindControl("plEdit")).Visible = false;
}

}

}

最新文章

  1. spring mvc定时任务的简单使用
  2. 一个页面从输入URL 到页面加载显示完成的过程中都发生了什么
  3. Mes首检确认统计的存储过程
  4. SharePoint中的权限体系
  5. Asp.Net转换Html加号显示为空格的字符!(自已备用)
  6. 分享 - Social.framework
  7. 【JAVA - 基础】之反射的原理与应用
  8. 【SDUT 3038】迷之博弈
  9. hdu 2594 Simpsons’ Hidden Talents 【KMP】
  10. C#设计模式之简单工厂模式
  11. EXT.NET复杂布局(二)——报表
  12. JSON、JSONP、Ajax的区别
  13. 使用JWT的OAuth2的SSO分析
  14. 小程序[publib]:1 request:fail ssl hand shake error 如果用的是阿里云和宝塔那么如下解决
  15. java编译通过,为什么运行却提示找不到或无法加载主类?
  16. 蓝牙发现服务UUID(service UUID)
  17. 编写一个c++工程
  18. Android App组件之Fragment说明和示例
  19. 在VirtualBox虚拟机中安装Centos操作系统怎么与本地XShell远程连接
  20. Selenium Webdriver——Table类封装

热门文章

  1. 在docker中运行elasticsearch时go程序无法连接到节点
  2. 域名和IP之间的关系
  3. 与Linux的第一次遭遇
  4. 20155336 2016-2017-2 《Java程序设计》第三周学习总结
  5. sql语句-6-更新数据
  6. 如何在makfile中查看变量的值
  7. SQL注入--显注和盲注中过滤逗号绕过
  8. loadrunner12安装教程
  9. 假回溯-uva140带宽
  10. Oracle数据库及图形化界面安装教程详解