ASP.NET―001:GridView绑定List

这篇文章主要介绍了ASP.NET―GridView绑定List、页面返回值具体实现,需要的朋友可以参考下

用惯了WPF的绑定,ASP.NET的绑定貌似不是很好用。下面看看ASP.NET绑定的用法。一般来说可以直接绑定DataTable的,不过我觉得绑定List比较符合面向对象编程。

绑定的方法是两句代码:

 

 代码如下:

GridView名.DataSource = List<自定义类>;  

 

GridView名.DataBind();  

 

 

直接看例子吧,以下是一个绑定一个PersonModel类的例子。其中用到了页面返回参数,使用js传递,js可写在前端也可直接写在后台代码里。

项目结构:

 

效果:

 

实体类

 代码如下:

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>

代码下载

 

时间: 2025-01-17 08:42:37

ASP.NET―001:GridView绑定List的相关文章

ASP.NET―001:GridView绑定List、页面返回值具体实现_实用技巧

用惯了WPF的绑定,ASP.NET的绑定貌似不是很好用.下面看看ASP.NET绑定的用法.一般来说可以直接绑定DataTable的,不过我觉得绑定List比较符合面向对象编程.绑定的方法是两句代码: 复制代码 代码如下: GridView名.DataSource = List<自定义类>;  GridView名.DataBind();  直接看例子吧,以下是一个绑定一个PersonModel类的例子.其中用到了页面返回参数,使用js传递,js可写在前端也可直接写在后台代码里.项目结构: 效果:

ASP.NET使用Gridview绑定数据库中的图片

注:此系列记录在我实际开发中遇到的问题和收藏一些技巧文章. 我们都知道,在Gridview中不能直接去绑定数据库中的图片,我们可以利用HttpHandler很容易的完成这个任务,在这里我记录一下这个过程. 1.上传图片存储到数据库中 在数据库中创建一个表,添加一下3个字段: 步骤一:在Web页面中拖一个FileUpload 控件,一个文本框用于输入名称和提交上传按钮 <asp:FileUpload ID="fuImage" runat="server" /&g

ASP.NET2.0 GridView绑定XmlDocument

asp.net|xml ASP.NET 2.0提供了多种数据源,一般情况下,XmlDataSource控件使用XML文件,下面的例子就是使用XmlDocument对象进行数据绑定的一种方法. VB.NET代码 <%@ Page Language="VB" %><script runat="server">  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.Ev

asp.net中GridView绑定数据时进行Fromat

asp.net|数据 原来我们在用DataGrid时绑定一个段比如dateandtime案以下方式绑定就可以了    <asp:BoundColumn                HeaderText="日期"                DataField="dateandtime"                DataFormatString="{0:yyyy-MM-dd}"                 >但不幸的是刚刚

菜鸟一枚,希望大神帮忙!我的问题是关于gridview绑定数据源的asp.net

问题描述 菜鸟一枚,希望大神帮忙!我的问题是关于gridview绑定数据源的asp.net 希望在UserStateID后面加上第二张标的Name字段 解决方案 这个是给数据库添加一列然后从数据库中读取的:ALTER TABLE 表名ADD 列名 类型; 下面的不是从数据库添加然后读取的http://zhidao.baidu.com/question/201260940 如果回答对你有帮助请采纳 解决方案二: 直接在sql中连接查询即可select a.* from 表1 a join 表2 b

ASP.NET使用gridview获取当前行的索引值

  这篇文章主要介绍了ASP.NET使用gridview获取当前行的索引值的方法汇总,有需要的小伙伴可以参考下. 在用GridView控件时,我们经常会碰到获取当前行的索引,通过索引进行许多操作.例如,可以获得当前行某一个控件元素;设置某一元素的值等等.下面结合实例介绍几种获得GridView当前行索引值的方法. 实例: ① 目的:获取GridView中RowCommand的当前索引行. ② 前台页面:在GridView中添加一模版列,里面添加一个LinkButton控件. 代码: ? 1 2

asp.net用gridview显示数据库中两个表的数据?

问题描述 asp.net用gridview显示数据库中两个表的数据? asp.net用gridview显示数据库中两个表的数据?把两表绑定在datatable并用gridview显示数据 解决方案 两个表什么关系?如果是一样的表结构,用union连接,如果是主系表关系,那么可以用join.具体按照我说的google下. 解决方案二: 不管是查询几个表,最后通过sql语句走ado.net,查询出来的数据都放入DataTable或DataSet中,然后绑定到gridview 解决方案三: 如果是一起

asp.net中GridView编辑,更新,合计用法示例_实用技巧

本文实例讲述了asp.net中GridView编辑,更新,合计用法.分享给大家供大家参考,具体如下: 前台代码: <asp:GridView ID="tabgv" runat="server" DataKeyNames="ysId" ShowFooter="True" OnRowDataBound="GridView1_RowDataBound" OnRowCreated="GridView

asp.net中gridview在360浏览器的网页中显示出空白的边框

问题描述 asp.net中gridview在360浏览器的网页中显示出空白的边框 利用VS中的asp.net编写网页时,用Gridview来绑定数据,在本地运行正常,用IIS发布后,不显示数据时(不查询,只有表头ID)在IE浏览器中也是正常的:但是在360浏览器中就显示出问题了:表头(第一行)后面接着显示出空白的边框(第二行).我怀疑是浏览器兼容性的问题,请问这个怎么修改???