ASP.NET—002:GridView手动增加一行

ASP.NET中的gridview如何增加一行呢,下面介绍一种最简单的方式。
只使用后台的数据,在后台的datatable或者list增加一项,然后重新绑定gridview。
直接看代码
效果:

实体类

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


页面管理类
public class MainManager
    {
        private int sIndex = 0;


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


        private static MainManager instance = null;


        public List<PersonModel> PersonCollect
        {
            get { return personCollect; }


            set { personCollect = value; }
        }


        public static MainManager DoGetInstance()
        {
            if (instance == null)
            {
                instance = new MainManager();
            }


            return instance;
        }


        public void DoAddSinglePersons()
        {
            sIndex = this.PersonCollect.Count;


            PersonModel model = new PersonModel();


            model.PersonIndex = sIndex;


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


            model.PersonName = "测试" + sIndex;


            model.PersonAge = 17 + sIndex;


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


            model.PersonSelected = false;


            this.PersonCollect.Add(model);
        }
    }


前台
<head runat="server">
    <title></title>
</head>
<body id="MyBody" runat="server" ms_positioning="GridLayout">
    <form id="Form1" runat="server" method="post">
    <div>
    <asp:Button ID="btnAdd" runat="server" OnClick="AddItem_Click" Text="增加" />
    <asp:GridView ID="dgPersons" runat="server" AutoGenerateColumns="False" 
     EnableViewState="false"
    CellPadding="4"  ForeColor="#333333" DataKeyNames="PersonID">
     <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>


后台
public partial class _Default : System.Web.UI.Page
    {
        private MainManager dManager = null;


        protected PersonModel selectItem = null;


        protected void Page_Load(object sender, EventArgs e)
        {
            dManager = MainManager.DoGetInstance();


            if (!IsPostBack)
            {
                dManager.DoAddSinglePersons();


                this.dgPersons.DataSource = dManager.PersonCollect;


                this.dgPersons.DataBind();
            }
        }


        protected void AddItem_Click(object sender, EventArgs e)
        {
            dManager.DoAddSinglePersons();


            this.dgPersons.DataSource = dManager.PersonCollect;


            this.dgPersons.DataBind();
        }
    }
如果一行中有其他list控件比如 下拉列表asp:DropDownList,那么在实体中增加一个list,对应下拉列表的绑定。而且对于每一行的点击,选择等操作都要写相应的事件修改数据,下一次绑定时要将list中的数据修改成操作过的值或状态,再进行绑定。
当然一般来说,使用js增加比较正规一些,下一篇来介绍。
代码下载


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。