zoukankan      html  css  js  c++  java
  • C#控件之Repeater控件使用

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

    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;
    }

    }

    }

  • 相关阅读:
    解决在macOS下安装了python却没有pip命令的问题【经验总结】
    Mac OS下安装MongoDB以及配置方法总结【笔记】
    web上常见的攻击方式及简单的防御方法
    Destoon二开必看执行流程
    网站入侵注入的几种方法总结【笔记】
    命令检测站点是否使用CDN加速
    织梦xss通杀所有版本漏洞【学习笔记】
    让你知晓内容安全的边界:盘点2017、2018这两年的内容监管
    知物由学 | AI网络安全实战:生成对抗网络
    人工智能热门图书(深度学习、TensorFlow)免费送!
  • 原文地址:https://www.cnblogs.com/hrrpcy/p/9569348.html
Copyright © 2011-2022 走看看