程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET―001:GridView綁定List

ASP.NET―001:GridView綁定List

編輯:關於ASP.NET

    這篇文章主要介紹了ASP.NET―GridView綁定List、頁面返回值具體實現,需要的朋友可以參考下

    用慣了WPF的綁定,ASP.NET的綁定貌似不是很好用。下面看看ASP.NET綁定的用法。一般來說可以直接綁定DataTable的,不過我覺得綁定List比較符合面向對象編程。

    綁定的方法是兩句代碼:

     

     代碼如下:

    GridView名.DataSource = List<自定義類>;  

     

    GridView名.DataBind();  

     

     

    直接看例子吧,以下是一個綁定一個PersonModel類的例子。其中用到了頁面返回參數,使用js傳遞,js可寫在前端也可直接寫在後台代碼裡。

    項目結構:

     

    ASP.NET―001:GridView綁定List   三聯

    效果:

     

    26.jpg

    實體類

     代碼如下:

    public class PersonModel

        {

            private int personIndex;

     

     

            public int PersonIndex

            {

                get { return personIndex; }

     

     

                set { personIndex = value; }

            }

     

     

            private string personID;

     

     

            public string PersonID

            {

                get { return personID; }

     

     

                set { personID = value; }

            }

     

     

            private string personName;

     

     

            public string PersonName

            {

                get { return personName; }

     

     

                set { personName = value; }

            }

     

     

            private string personSex;

     

     

            public string PersonSex

            {

                get { return personSex; }

     

     

                set { personSex = value; }

            }

     

     

            private int personAge;

     

     

            public int PersonAge

            {

                get { return personAge; }

     

     

                set { personAge = value; }

            }

     

     

            private bool personSelected = false;

     

     

            public bool PersonSelected

            {

                get { return personSelected; }

     

     

                set { personSelected = value; }

            }

        }

     

     

     

    針對綁定的aspx頁面寫一個管理類,用於操作數據

     

     代碼如下:

    public class ChildFrmManager

        {

            private List<PersonModel> personCollect = new List<PersonModel>();

     

     

            private static ChildFrmManager instance = null;

     

     

            public List<PersonModel> PersonCollect

            {

                get { return personCollect; }

     

     

                set { personCollect = value; }

            }

     

     

            public static ChildFrmManager DoGetInstance()

            {

                if (instance == null)

                {

                    instance = new ChildFrmManager();

                }

     

     

                return instance;

            }

     

     

            public void DoAddPersons()

            {

                for (int i = 0; i < 20; i++)

                {

                    PersonModel model = new PersonModel();

     

     

                    model.PersonIndex = i + 1;

     

     

                    model.PersonID = System.Guid.NewGuid().ToString();

     

     

                    model.PersonName = "測試" + i;

     

     

                    model.PersonAge = 27 + i;

     

     

                    model.PersonSex = i % 2 == 0 ? "男" : "女";

     

     

                    model.PersonSelected = false;

     

     

                    this.PersonCollect.Add(model);

                }

            }

        }

     

     

     

    綁定的頁面前端

     代碼如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ChildFrm.aspx.cs" Inherits="ASPNetGridView.Pages.ChildFrm" %>

     

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

     

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head runat="server">

        <title></title>

    </head>

    <<body id="MyBody" runat="server" ms_positioning="GridLayout">

        <form id="Form1" runat="server" method="post">

        <div>

        <asp:GridView ID="dgPersons" runat="server" AutoGenerateColumns="False" 

         EnableViewState="false"

        CellPadding="4"  ForeColor="#333333" DataKeyNames="PersonID"

         OnSelectedIndexChanged="Selcted_Click">

         <Columns>

           <asp:CommandField ShowSelectButton="True" />  

           <asp:BoundField DataField="PersonIndex" HeaderText="序號"/>

           <asp:TemplateField>

           <ItemTemplate>

           <input id="radiobutton1" name="pselect" type="radio" />

           </ItemTemplate>

           </asp:TemplateField>

           <asp:BoundField DataField="PersonName" HeaderText="姓名" />

           <asp:BoundField DataField="PersonAge" HeaderText="年齡" />

           <asp:BoundField DataField="PersonSex" HeaderText="性別" />

         </Columns>

            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />

                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />

                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

                <EditRowStyle BackColor="#999999" />

                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />

     

        </asp:GridView>

        </div>

        </form>

    </body>

    </html>

     

     

     

    綁定頁面後台

    代碼如下:

     public partial class ChildFrm : System.Web.UI.Page

        {

            private ChildFrmManager dManager = null;

     

     

            protected PersonModel selectItem = null;

     

     

            protected void Page_Load(object sender, EventArgs e)

            {

                dManager = ChildFrmManager.DoGetInstance();

     

     

                if (!IsPostBack)

                {

                    dManager.DoAddPersons();

     

     

                    this.dgPersons.DataSource = dManager.PersonCollect;

     

     

                    this.dgPersons.DataBind();

                }

            }

     

     

            protected void Selcted_Click(object sender, EventArgs e)

            {

                int selectIndex = this.dgPersons.SelectedIndex;

     

     

                foreach (PersonModel mitem in dManager.PersonCollect)

                {

                    if (mitem.PersonIndex - 1 == selectIndex)

                    {

                        mitem.PersonSelected = true;

                    }

                    else

                    {

                        mitem.PersonSelected = false;

                    }

                }

     

     

                selectItem = dManager.PersonCollect[selectIndex];

     

     

                string vbCrLf = " ";

     

     

                string strScript = "<script>" + vbCrLf;

     

     

                strScript += "window.parent.returnValue='" + selectItem.PersonName + "';" + vbCrLf;

     

     

                strScript += "window.parent.close();" + vbCrLf;

     

     

                strScript += "</script>" + vbCrLf;

     

     

                if (!IsClientScriptBlockRegistered("clientScript"))

                {

                    RegisterClientScriptBlock("clientScript", strScript);

                }

            }

        }

     

     

     

    承載綁定頁面的頁面

     

     

    復制代碼 代碼如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FrameFrm.aspx.cs" Inherits="ASPNetGridView.Pages.FrameFrm" %>

     

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

     

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head runat="server">

        <title></title>

    </head>

    <frameset rows="0,*">

        <frame src="about:blank">

        <frame src="ChildFrm.aspx">

      </frameset>

    </html>

     

     

     

    主頁面,獲取返回值的js在前端

     

     

    復制代碼 代碼如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ASPNetGridView._Default" %>

     

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

     

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head runat="server">

        <title></title>

    </head>

    <body>

        <div align="center">

            <form id="Form1" runat="server" method="post">

                <table runat="server">

                  <tr>

                      <td>

                      <asp:Label ID="Label1" runat="server" Font-Bold="true">選擇結果</asp:Label>

                      </td>

     

                      <td>

                      <asp:TextBox ID="txtShowReturnValue" runat="server" Width="100px" />

                      </td>

                      <td>

                      <asp:Button ID="btnOpenNewFrm" runat="server" Text="選擇" Width="60px" OnClientClick="OpenNewWindow()"/>

                      </td>

                  </tr>

                </table>

            </form>

        </div>

    </body>

    <script type ='text/javascript'>

        function OpenNewWindow() {

     

            var str = window.showModalDialog('Pages/FrameFrm.aspx', document.Form1.txtShowReturnValue.value, 'dialogWidth=1000px;dialogHeight=900px', 'scroll:yes');

     

            if (str != null)

            { document.Form1.txtShowReturnValue.value = str; } 

        }

    </script>

    </html>

    代碼下載

     

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved