none
关于asp:GridView的用法 RRS feed

  • 问题

  • 比如我现在有一个类student;

    List<student> lstudent =new List<student>();

    lstudent 中存在一张学生表,现在要将此list表显示到GridView控件(设控件名为StudentGridView)中,如何控制的?如何添加新列?修改列名?添加行?如何显示选中的行,比如红色行显示被选中行?

    class student
    {
    string name;
    int age;
    string address;
    int number;
    }
    List<student> lstudent =new List<student>();
    
    lstudent1={"张三",10,"北京",123};
    lstudent2={"李四",11,"上海",456};
    lstudent.Add(lstudent1);
    lstudent.Add(lstudent2);//仅仅举个例表明lstudent非空
    

    小弟很愚笨,请写细一下,每个function的作用,谢谢!!!


    证明自己存在
    2011年3月8日 14:58

答案

  • 绑定数据源应该如何设定?

    其次是我现实的是一个动态的表,列的名字可能发生改变,新增列数,新增行数都在变。绑定数据源不就唯一了吗?

     

    绑定的意思是把每一次要显示的数据绑定带这个控件上吧,抱歉我上面理解错了。


    证明自己存在


    要动态的改变行和列,就需要用代码对GridView进行控制。我借肖小勇的代码改一下。贴出关键的。

    <asp:GridView ID="DataGridView" runat="server" AutoGenerateColumns="false" >
            </asp:GridView>

    protected void Page_Load(object sender, EventArgs e)
            {
                #region 可以将AutoGenerateColumns="true" ,则无须这段代码,但如果需要精确控制
                BoundField boundField1 = new BoundField();
                boundField1.HeaderText = "Model";
                boundField1.DataField = "Model";
                DataGridView.Columns.Add(boundField1);
                BoundField boundField2 = new BoundField();
                boundField2.HeaderText = "Person";
                boundField2.DataField = "Person";
                DataGridView.Columns.Add(boundField2);
                BoundField boundField3 = new BoundField();
                boundField3.HeaderText = "Year";
                boundField3.DataField = "Year";
                DataGridView.Columns.Add(boundField3);
                #endregion

                var dataSource = new List<Sample>() {
          new Sample(){Model=1, Person="1"},
          new Sample(){Model=2, Person="2"}
        };
                this.DataGridView.DataSource = dataSource;
                this.DataGridView.DataBind();

            }

    • 已标记为答案 Link_firer 2011年3月10日 10:43
    2011年3月9日 16:12
    版主

全部回复

  • 你好!

    下面的地址是涉及了 GridView 的大部分用法希望对你有帮助

    http://www.cnblogs.com/huangjianhuakarl/archive/2009/02/03/1381710.html


    知识改变命运,奋斗成就人生!
    • 已标记为答案 Link_firer 2011年3月8日 15:44
    • 取消答案标记 Link_firer 2011年3月8日 16:17
    2011年3月8日 15:40
    版主
  • 看过你发的那个网页了,但是没有解决问题,因为我发现,并不是我的Code操作GridView有误,而是特殊的错误

    现在附上源代码,请各位大师帮忙分析一下原因

    <%@ Page Title="主页" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
      CodeBehind="Main.aspx.cs" Inherits="Try_WebApplication.Main" %>
    
    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    </asp:Content>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
      
    
    
    <!--中间省略了很多代码-->   <asp:GridView ID="DataGridView" runat="server" Height="200px" Width="900px" 
          CellPadding="4" ForeColor="#333333" GridLines="None" >
         <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
         <Columns>
           <asp:BoundField HeaderText="Model" />
           <asp:BoundField HeaderText="Person" />
           <asp:BoundField HeaderText="Year" />
         </Columns>
         <EditRowStyle BackColor="#999999" />
         <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
         <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
         <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
         <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
         <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
         <SortedAscendingCellStyle BackColor="#E9E7E2" />
         <SortedAscendingHeaderStyle BackColor="#506C8C" />
         <SortedDescendingCellStyle BackColor="#FFFDF8" />
         <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
       </asp:GridView> 
    </asp:Content>
    

    出现的现象是,没有任何报错,但是F5运行后,出现的网页中没有GridView这个控件,其他控件都正常显示,就是根本没有显示.比较急,求帮助!!

    HeaderContent和BodyContent都是VS2010自动生成的母版。我觉得可能是因为BodyContent造成的。请帮忙分析一下原因,如何解决?

    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Try_WebApplication.SiteMaster" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
      <title></title>
      <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
      <asp:ContentPlaceHolder ID="HeadContent" runat="server">
      </asp:ContentPlaceHolder>
    </head>
    <body>
      <form runat="server">
      <div class="page">
        <div class="header">
          <div class="title">
            <h1>
              XX管理开发文件应用系统
            </h1>
          </div>
          <div class="loginDisplay">
           <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
              <AnonymousTemplate>
                [ <a href="~/Login.aspx" ID="HeadLoginStatus" runat="server">登录</a> ]
              </AnonymousTemplate>
              <LoggedInTemplate>
                欢迎使用 <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
                [ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="注销" LogoutPageUrl="~/"/> ]
              </LoggedInTemplate>
            </asp:LoginView>
          </div>
          <div class="clear hideSkiplink">
            <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
              <Items>
                <asp:MenuItem NavigateUrl="~/Default.aspx" Text="主页"/>
                <asp:MenuItem NavigateUrl="~/About.aspx" Text="关于"/>
                <asp:MenuItem NavigateUrl="~/CreateUser.aspx" Text="管理用户(仅管理员可用)"/>
              </Items>
            </asp:Menu>
          </div>
        </div>
        <div class="main">
          <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
        </div>
        <div class="clear">
        </div>
      </div>
      <div class="footer">
        
      </div>
      </form>
    </body>
    </html>
    
    

    证明自己存在
    2011年3月9日 10:28
  • 没有为GridView绑定数据源,即要显示的信息。
    2011年3月9日 15:02
    版主
  • 绑定数据源应该如何设定?

    其次是我现实的是一个动态的表,列的名字可能发生改变,新增列数,新增行数都在变。绑定数据源不就唯一了吗?

     

    绑定的意思是把每一次要显示的数据绑定带这个控件上吧,抱歉我上面理解错了。


    证明自己存在
    2011年3月9日 15:37
  • 你好!

    1 除了上面的问题你还需要将 asp:BoundField 的 DataField 属性,即需要绑定的字段。下面是完整的事例:

    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
      void Page_Load(Object Sender, EventArgs e)
      {
        var dataSource = new List<Sample>() { 
          new Sample(){Model=1, Person="1"},
          new Sample(){Model=2, Person="2"}
        };
        this.DataGridView.DataSource = dataSource;
        this.DataGridView.DataBind();
      }
    
      public class Sample
      {
        public int Model { get; set; }
        public string Person { get; set; }
        public int Year { get { return DateTime.Now.Year; } }
      }
    
     
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>Sample</title>
    </head>
    <body>
      <form runat="server" id="form1">
      <asp:GridView ID="DataGridView" runat="server" Height="200px" Width="900px" CellPadding="4"
        ForeColor="#333333" GridLines="None" AutoGenerateColumns="false">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775"/>
        <Columns>
          <asp:BoundField HeaderText="Model" DataField="Model"/>
          <asp:BoundField HeaderText="Person" DataField="Person"/>
          <asp:BoundField HeaderText="Year" DataField="Year"/>
        </Columns>
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
      </asp:GridView>
      </form>
    </body>
    </html>
    
    
     


    知识改变命运,奋斗成就人生!
    2011年3月9日 15:42
    版主
  • 绑定数据源应该如何设定?

    其次是我现实的是一个动态的表,列的名字可能发生改变,新增列数,新增行数都在变。绑定数据源不就唯一了吗?

     

    绑定的意思是把每一次要显示的数据绑定带这个控件上吧,抱歉我上面理解错了。


    证明自己存在


    要动态的改变行和列,就需要用代码对GridView进行控制。我借肖小勇的代码改一下。贴出关键的。

    <asp:GridView ID="DataGridView" runat="server" AutoGenerateColumns="false" >
            </asp:GridView>

    protected void Page_Load(object sender, EventArgs e)
            {
                #region 可以将AutoGenerateColumns="true" ,则无须这段代码,但如果需要精确控制
                BoundField boundField1 = new BoundField();
                boundField1.HeaderText = "Model";
                boundField1.DataField = "Model";
                DataGridView.Columns.Add(boundField1);
                BoundField boundField2 = new BoundField();
                boundField2.HeaderText = "Person";
                boundField2.DataField = "Person";
                DataGridView.Columns.Add(boundField2);
                BoundField boundField3 = new BoundField();
                boundField3.HeaderText = "Year";
                boundField3.DataField = "Year";
                DataGridView.Columns.Add(boundField3);
                #endregion

                var dataSource = new List<Sample>() {
          new Sample(){Model=1, Person="1"},
          new Sample(){Model=2, Person="2"}
        };
                this.DataGridView.DataSource = dataSource;
                this.DataGridView.DataBind();

            }

    • 已标记为答案 Link_firer 2011年3月10日 10:43
    2011年3月9日 16:12
    版主
  • 非常感谢,按照你们的方法成功了。仅仅错在没有绑定数据源。


    证明自己存在
    2011年3月10日 10:44