asp.net Repeater控件使用

效果圖

一、列表頁面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="List.aspx.cs" Inherits="WebApplication1.Person.PersonList" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <script src="../Scripts/jquery-1.10.2.min.js"></script>
    <title></title>
</head>
<body>
    <p>
      <a href="/Person/Save" style="float:right">添加</a>
    </p>
    <form id="form1" runat="server">
        <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound" OnItemCommand="Repeater1_ItemCommand">
            <HeaderTemplate>
                <table class="tb_list">
                    <tr>
                        <th>編號</th>
                        <th>姓名</th>
                        <th>年齡</th>
                        <th>性別</th>
                        <th>操作</th>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td><%#Eval("Id") %></td>
                    <td><%#Eval("UserName") %></td>
                    <td>
                        <asp:Label runat="server" ID="lbAge" Text='<%#Eval("Age") %>' />
                    </td>
                    <td><%#Eval("SexName") %></td>
                    <td>  
                           <a href='/Person/Save.aspx?Id=<%#Eval("Id") %>'>編輯</a>
                        <a  href='/Person/Detail.aspx?Id=<%#Eval("Id") %>'>詳細</a>
                         <asp:LinkButton ID="lbtnDel" OnClientClick="javascript:return confirm('您確定要刪除該項麼?')" CommandName="DelPerson" CommandArgument='<%#Eval("Id") %>' runat="server">刪除</asp:LinkButton>
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>
    </form>
</body>
</html>
<style type="text/css">
    .tb_list {
        border-collapse: collapse;
        width: 100%;
        border: 1px solid black;
    }

        .tb_list th, .tb_list td {
            padding: 10px;
            text-align: center;
            border-bottom: 1px solid black;
        }

    .alternating {
        background-color: silver;
    }
</style>
<script type="text/javascript">
    $(function () {
        $(".tb_list tr:odd").each(function (index, elm) {
            $(elm).addClass("alternating");
        });
    });
</script> 
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1.Person
{
    public partial class PersonList : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.Repeater1.DataSource = rptDataBind();
                this.Repeater1.DataBind();
            }
        }
        private IList<Person> rptDataBind()
        {
            string sql = "select p.*,s.SexName from tb_Person p left join tb_Sex s on p.Sex=s.Id";
            IList<Person> list = new List<Person>(); 
            using (MSSqlHelper context = new MSSqlHelper())
            {
                SqlDataReader reader = context.GetSqlDataReader(sql); 
                while (reader.Read())
                {
                    Person p = new Person(); 
                    p.Id = Convert.ToInt32(reader["Id"]);
                    p.Age = Convert.ToInt32(reader["Age"]);
                    p.Sex = Convert.ToInt32(reader["Sex"]);
                    p.UserName = reader["UserName"].ToString();
                    p.SexName = reader["SexName"].ToString();
                    list.Add(p);
                }
                reader.Close();
                return list;
            }
        }
        protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Label lbAge = (Label)e.Item.FindControl("lbAge");
                //方式一
                if (Convert.ToInt32( lbAge.Text??"0") > 25)
                {
                    lbAge.ForeColor = Color.Red;
                    lbAge.Style.Add(HtmlTextWriterStyle.FontWeight, "900");
                }
                ////方式二
                //if (((Person)e.Item.DataItem).Age > 25)
                //{
                //    lbAge.ForeColor = Color.Red;
                //    lbAge.Style.Add(HtmlTextWriterStyle.FontWeight, "900");
                //}
            }
        }
        protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "DelPerson")
            {
                string sql = "delete  tb_Person  where Id=@Id"; 
                using (MSSqlHelper context = new MSSqlHelper())
                {
                    context.ExecuteNonQuery(sql, new SqlParameter("@Id", e.CommandArgument));
                    Server.Transfer("/Person/List.aspx");
                }
            }
        }
    }
    class Person
    {
        public int Id { get; set; }
        public string UserName { get; set; }
        public int Age { get; set; }
        public int Sex { get; set; }
        public string SexName { get; set; }
    }
}

二、添加、修改頁面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Save.aspx.cs" Inherits="WebApplication1.Person.SavePerson" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:HiddenField runat="server"  ID="hidId" />
        <p>
            <label>姓名</label><asp:TextBox runat="server" ID="txtUserName"></asp:TextBox>
        </p>
        <p>
            <label>年齡</label>
            <asp:DropDownList ID="ddlAge" runat="server">
            </asp:DropDownList>
        </p>
        <p>
            <label>性別</label><asp:RadioButtonList ID="rbtnListSex" runat="server"></asp:RadioButtonList> 
        </p> 
        <p>
            &nbsp;<asp:Button ID="btnSubmite" runat="server" Text="提交" OnClick="btnSubmite_Click" />
        </p>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1.Person
{
    public partial class SavePerson : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                int id = Convert.ToInt32(Request["Id"] ?? "0");
                hidId.Value = id+string.Empty; 
                BindData(id);
            } 
        }
        private void BindData(int id)
        { 
            string sqlPerson = "select Age,Sex,UserName from tb_Person where id=" + id;
            string sqlAge = "select *from tb_Sex";
            DataTable dtAge = new DataTable();
            DataTable dtPerson = new DataTable(); 
            using (MSSqlHelper context = new MSSqlHelper())
            {
                dtAge = context.ExecuteDataTable(sqlAge);
                dtPerson = context.ExecuteDataTable(sqlPerson);
            } 
            //年齡綁定
            for (int i = 1; i < 120; i++)
            {
                ddlAge.Items.Add(new ListItem(i.ToString()));
            } 
            //性別綁定 
            foreach (DataRow row in dtAge.Rows)
            {
                rbtnListSex.Items.Add(new ListItem(row["SexName"].ToString(), row["Id"].ToString()));
            } 
            foreach (DataRow row in dtPerson.Rows)
            {
                ddlAge.SelectedIndex = Convert.ToInt32(row["Age"])-1;
                rbtnListSex.SelectedValue = Convert.ToString(row["Sex"]); 
                txtUserName.Text =Convert.ToString( row["UserName"]);
            }
        }

        protected void btnSubmite_Click(object sender, EventArgs e)
        {
            int id =Convert.ToInt32( this.hidId.Value);
            string sql = "";
            if (id > 0)
            {
                sql = "UPDATE [Demo].[dbo].[tb_Person] SET[UserName] = @UserName,[Age] = @Age,[Sex] = @Sex WHERE Id=@Id";
            }
            else
            {
                sql = "INSERT INTO [Demo].[dbo].[tb_Person]([UserName],[Age],[Sex])VALUES(@UserName,@Age,@Sex)";
            }
            SqlParameter[] param = new[] {
                new SqlParameter("@UserName",this.txtUserName.Text),
                 new SqlParameter("@Age",this.ddlAge.SelectedValue),
                  new SqlParameter("@Sex",this.rbtnListSex.SelectedValue),
                   new SqlParameter("@Id",id),
            }; 
            using (MSSqlHelper contenxt = new MSSqlHelper())
            {
                contenxt.ExecuteNonQuery(sql, param);
                Response.Redirect("~/Person/List.aspx"); 
            }
        }
    }
}

三、詳細頁面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Detail.aspx.cs" Inherits="WebApplication1.Person.PersonDetail" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <p>
        <label>姓名</label><asp:Label ID="lbUserName" runat="server" ></asp:Label>
    </p>
    <p>
        <label>年齡</label><asp:Label ID="lbAge" runat="server" ></asp:Label>
    </p>
    <p>
        <label>性別</label><asp:Label ID="lbSexName" runat="server"></asp:Label>
    </p>
    <p>
        &nbsp;<input type="button" value="返回" onclick="window.location.href='/Person/List.aspx'" />
    </p>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1.Person
{
    public partial class PersonDetail : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string sql = "select p.*,s.SexName from tb_Person p left join tb_Sex s on p.Sex=s.Id where p.Id=@Id";
            DataTable dt = new DataTable();
            using (MSSqlHelper context = new MSSqlHelper())
            {
                dt = context.ExecuteDataTable(sql,new SqlParameter("@Id",Request["Id"]));
            } 
            foreach (DataRow row in dt.Rows)
            {
                lbAge.Text = Convert.ToString(row["Age"]);
                lbSexName.Text = Convert.ToString(row["SexName"]);
                lbUserName.Text = Convert.ToString(row["UserName"]);  
            }
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章