• 数据控件DataGrid数据控件


    DataGrid数据控件是3个数据控件中功能最强大的一个。使用DataGrid控件可以自动显示表的内容。利用DataReader对象或者DataSet对象和DataGrid控件进行绑定,就可以进行数据输出。
    1、利用DataGrid控件实现分页
    <asp:DataGrid ID="dg" runat="server" AllowPaging="True" BorderColor="Black"
                CellPadding
    ="2" OnPageIndexChanged="ChangePage" PageSize="5">
                
    <PagerStyle HorizontalAlign="Right" NextPageText="后页" PrevPageText="前页" />
                
    <AlternatingItemStyle BackColor="#FFFFCD" />
                
    <HeaderStyle BackColor="#AAAADD" />
    </asp:DataGrid>

    protected void Page_Load(object sender, EventArgs e)
        {
            BindGrid();
        }

        
    private void BindGrid()
        {
            
    string Provider, DataBase, ConnStr, SQL;
            Provider 
    = "Microsoft.Jet.OLEDB.4.0;";
            DataBase 
    = Server.MapPath("person.mdb");
            ConnStr 
    = "Provider=" + Provider + "Data Source=" + DataBase;
            SQL 
    = "select * from grade";
            OleDbDataAdapter da;
            da 
    = new OleDbDataAdapter(SQL, ConnStr);
            DataSet ds 
    = new DataSet();
            da.Fill(ds, 
    "grade");
            dg.DataSource 
    = ds.Tables["grade"].DefaultView;
            dg.DataBind();
        }

        
    public void ChangePage(object sender, DataGridPageChangedEventArgs e)
        {
            dg.CurrentPageIndex 
    = e.NewPageIndex;
            BindGrid();
        }

    可以把前页和后页改成数字显示。修改为PagerStyle-Mode="NumericPages"可以实现数字显示。
    一般用表格显示数据的时候,将某列显示成超级链接的形式,用来进一步显示该记录的详细信息。
    利用HyperLinkColumn控件设置显示链接的列,DataNavigateUrlField属性表示链接的字段,DataNavigateUrlFormatString属性表示链接的地址。
    <asp:DataGrid ID="dg" runat="server" AllowPaging="True" BorderColor="Black"
                CellPadding
    ="2" OnPageIndexChanged="ChangePage" PageSize="5" AutoGenerateColumns="False">
                
    <PagerStyle HorizontalAlign="Right" NextPageText="后页" PrevPageText="前页" Mode="NumericPages" />
                
    <AlternatingItemStyle BackColor="#FFFFCD" />
                
    <HeaderStyle BackColor="#AAAADD" />
                
    <Columns>
                
    <asp:HyperLinkColumn DataTextField="学号" HeaderText="学号"
                DataNavigateUrlField
    ="学号"
                DataNavigateUrlFormatString
    ="test.aspx?id={0}"
                Target
    ="_blank" />            
                
    <asp:BoundColumn DataField="姓名" HeaderText="姓名" />
                
    <asp:BoundColumn DataField="数学" HeaderText="数学成绩" ItemStyle-HorizontalAlign="Right"/>
                
    </Columns>
            
    </asp:DataGrid>

    protected void Page_Load(object sender, EventArgs e)
        {
            BindGrid();
        }

        
    private void BindGrid()
        {
            
    string Provider, DataBase, ConnStr, SQL;
            Provider 
    = "Microsoft.Jet.OLEDB.4.0;";
            DataBase 
    = Server.MapPath("person.mdb");
            ConnStr 
    = "Provider=" + Provider + "Data Source=" + DataBase;
            SQL 
    = "select * from grade";
            OleDbDataAdapter da;
            da 
    = new OleDbDataAdapter(SQL, ConnStr);
            DataSet ds 
    = new DataSet();
            da.Fill(ds, 
    "grade");
            dg.DataSource 
    = ds.Tables["grade"].DefaultView;
            dg.DataBind();
        }

        
    public void ChangePage(object sender, DataGridPageChangedEventArgs e)
        {
            dg.CurrentPageIndex 
    = e.NewPageIndex;
            BindGrid();
        }

    //当单击某一行超级链接时,自动弹出新网页,调用程序test.aspx
    protected void Page_Load(object sender, EventArgs e)
        {
            OleDbConnection Conn;
            Conn 
    = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" +
                
    "Data Source=" + Server.MapPath("person.mdb"));
            Conn.Open();
            
    string strSQL = "select * from grade where 学号="+Request["id"];
            OleDbCommand Comm 
    = new OleDbCommand(strSQL, Conn);
            OleDbDataReader dr 
    = Comm.ExecuteReader();
            
    string html = " ";
            
    while (dr.Read())
            {
                html 
    += "<h1>学员:";
                html 
    += "<font color=red>"+dr["姓名"].ToString()+"</font>的成绩为:</h1><br>";
                html 
    += "学号为:"+dr["学号"].ToString()+"<br>";
                html 
    += "数学成绩为:"+dr["数学"].ToString()+"<br>";
                html 
    += "";
            }
            Response.Write(html);
            Conn.Close();
        }

    2、利用DataGrid控件动态添加数据
    public partial class _Default : System.Web.UI.Page
    {
        OleDbConnection Conn;
        
    protected void Page_Load(object sender, EventArgs e)
        {
            
    string Provider, DataBase, ConnStr, SQL;
            Provider 
    = "Microsoft.Jet.OLEDB.4.0;";
            DataBase 
    = Server.MapPath("person.mdb");
            ConnStr 
    = "Provider=" + Provider + "Data Source=" + DataBase;
            Conn 
    = new OleDbConnection(ConnStr);
            
    if (!IsPostBack) BindGrid();
        }

        
    private void BindGrid()
        {
            OleDbDataAdapter da 
    = new OleDbDataAdapter("select * from grade", Conn);
            DataSet ds 
    = new DataSet();
            da.Fill(ds);
            dg.DataSource 
    = ds;
            dg.DataBind();
        }
        
        
    public void ChangePage(object sender, DataGridPageChangedEventArgs e)
        {
            dg.CurrentPageIndex 
    = e.NewPageIndex;
            BindGrid();
        }

        
    public void Add_Click(object sender, EventArgs E)
        {
            String strSQL 
    = "insert into grade values(" + id.Text + ",'" + sex.Text + "','" + name.Text + "'," + 
                yuwen.Text
    +","+math.Text+","+ english.Text+")";
            OleDbCommand Comm 
    = new OleDbCommand(strSQL, Conn);
            Conn.Open();
            
    try
            {
                Comm.ExecuteNonQuery();
                Message.InnerHtml 
    = "<b>添加成功</b>";
            }
            
    catch (OleDbException)
            {
                Message.InnerHtml 
    = "添加失败";
                Message.Style[
    "color"= "red";
            }
            Conn.Close();
            BindGrid();
        }
    }

    <form id="form1" runat="server">
            
    <table width="95%">
                
    <tr>
                    
    <td valign="top">
                        
    <asp:DataGrid ID="dg" runat="server" BorderColor="Black" CellPadding="3"
                            OnPageIndexChanged
    ="ChangePage" PageSize="5" AutoGenerateColumns="False" BackColor="#CCCCFF" Font-Names="Verdana" Font-Size="9pt" Width="400px">
                            
    <PagerStyle HorizontalAlign="Right" NextPageText="后页" PrevPageText="前页" Mode="NumericPages" />
                            
    <HeaderStyle BackColor="#AAAADD" />
                            
    <Columns>
                                
    <asp:BoundColumn DataField="学号" HeaderText="学号" />
                                
    <asp:BoundColumn DataField="性别" HeaderText="性别" />
                                
    <asp:BoundColumn DataField="姓名" HeaderText="姓名" />
                                
    <asp:BoundColumn DataField="语文" HeaderText="语文" />
                                
    <asp:BoundColumn DataField="数学" HeaderText="数学" />
                                
    <asp:BoundColumn DataField="英语" HeaderText="英语" />
                            
    </Columns>
                        
    </asp:DataGrid>
                    
    </td>
                    
    <td valign="top">
                        
    <table style="font:8pt verdana">
                            
    <tr>
                                
    <td colspan="2" bgcolor="#aaaadd" style="font:10pt verdana">添加新的学员:
                                
    </td>
                            
    </tr>
                            
    <tr><td nowrap>学号:</td>
                            
    <td><asp:TextBox ID="id" runat="server" /></td>
                            
    </tr>
                            
    <tr><td nowrap>性别:</td>
                            
    <td><asp:TextBox ID="sex" runat="server" /></td>
                            
    </tr>
                            
    <tr><td nowrap>姓名:</td>
                            
    <td><asp:TextBox ID="name" runat="server" /></td>
                            
    </tr>
                            
    <tr><td nowrap>语文:</td>
                            
    <td><asp:TextBox ID="yuwen" runat="server" /></td>
                            
    </tr>
                            
    <tr><td nowrap>数学:</td>
                            
    <td><asp:TextBox ID="math" runat="server" /></td>
                            
    </tr>
                            
    <tr><td nowrap>英语:</td>
                            
    <td><asp:TextBox ID="english" runat="server" /></td>
                            
    </tr>
                            
    <tr><td colspan="2" style="padding-top:15" align="center">
                            
    <asp:Button Text="添加" OnClick="Add_Click" runat="Server" /></td>
                            
    </tr>
                            
    <tr><td colspan="2" style="padding-top:15" align="center">
                            
    <span id="Message" style="font:arial 11pt;" runat="server" /></td></tr>
                        
    </table>
                    
    </td>
                
    </tr>
            
    </table>
        
    </form>
    3、使用DataGrid控件动态操作数据
    public partial class _Default : System.Web.UI.Page
    {
        OleDbConnection Conn;
        
    protected void Page_Load(object sender, EventArgs e)
        {
            
    string Provider, DataBase, ConnStr;
            Provider 
    = "Microsoft.Jet.OLEDB.4.0;";
            DataBase 
    = Server.MapPath("person.mdb");
            ConnStr 
    = "Provider=" + Provider + "Data Source=" + DataBase;
            Conn 
    = new OleDbConnection(ConnStr);
            
    if (!IsPostBack) BindGrid();
        }

        
    private void BindGrid()
        {
            OleDbDataAdapter da 
    = new OleDbDataAdapter("select * from grade order by 学号", Conn);
            DataSet ds 
    = new DataSet();
            da.Fill(ds);
            dg.DataSource 
    = ds;
            dg.DataBind();
        }

        
    public void DataGrid_Edit(object sender, DataGridCommandEventArgs e)
        {
            dg.EditItemIndex 
    = (int)e.Item.ItemIndex;
            BindGrid();
        }

        
    public void DataGrid_Cancel(object sender, DataGridCommandEventArgs e)
        {
            dg.EditItemIndex 
    = -1;
            BindGrid();
        }

        
    public void DataGrid_Update(object sender, DataGridCommandEventArgs e)
        {
            
    string strSQL = "update grade set " +
                
    "姓名='" + ((TextBox)e.Item.Cells[3].Controls[0]).Text
            
    + "',数学=" + ((TextBox)e.Item.Cells[4].Controls[0]).Text
            
    + " where 学号=" + dg.DataKeys[(int)e.Item.ItemIndex];
            OleDbCommand cm 
    = new OleDbCommand(strSQL, Conn);
            Conn.Open();
            
    try
            {
                cm.ExecuteNonQuery();
                Message.InnerHtml 
    = "<b>编辑成功</b>";
                dg.EditItemIndex 
    = -1;
            }
            
    catch(OleDbException)
            {
                Message.InnerHtml
    ="编辑失败";
                Message.Style[
    "color"]="red";
            }
            cm.Connection.Close();
            BindGrid();
        }

        
    public void DataGrid_Delete(object sender, DataGridCommandEventArgs e)
        {
            
    string strSQL = "delete from grade where 学号="
            
    + dg.DataKeys[(int)e.Item.ItemIndex];
            OleDbCommand cm 
    = new OleDbCommand(strSQL, Conn);
            Conn.Open();
            
    try
            {
                cm.ExecuteNonQuery();
                Message.InnerHtml 
    = "<b>删除成功</b>";
            }
            
    catch (OleDbException)
            {
                Message.InnerHtml 
    = "<b>删除失败</b>";
                Message.Style[
    "color"]="red";
            }
            Conn.Close();
            BindGrid();
        }
    }

    <form id="form1" runat="server">
            
    <asp:DataGrid ID="dg" runat="server" Width="400" BackColor="#ccccff" BorderColor="black"
                ShowFooter
    ="false" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt"
                HeaderStyle
    -BackColor="#aaaadd" DataKeyField="学号" AutoGenerateColumns="false"
                OnEditCommand
    ="DataGrid_Edit"
                OnCancelCommand
    ="DataGrid_Cancel"
                OnUpdateCommand
    ="DataGrid_Update"
                OnDeleteCommand
    ="DataGrid_Delete">
                
    <Columns>
                    
    <asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新" ItemStyle-Wrap="false" />
                    
    <asp:ButtonColumn Text="删除" CommandName="Delete" ItemStyle-Wrap="false" />
                    
    <asp:BoundColumn HeaderText="学号" DataField="学号" ReadOnly="true" />
                    
    <asp:BoundColumn HeaderText="姓名" DataField="姓名" />
                    
    <asp:BoundColumn HeaderText="数学" DataField="数学" />
                
    </Columns>
            
    </asp:DataGrid>
            
    <span id="Message" style="font:arial 11pt;" runat="Server" />
        
    </form>

    程序中利用ItemStyle-Wrap="false"语句设置不折行显示,利用DataKeyField="学号"语句设置关键字段是学号,因此可以利用dg.DataKeys[(int)e.item.ItemIndex]取出某行的学号。取其行的其它列时,使用((TextBox)e.Item.Cells[3].Controls[0]).Text语句,e中存储当前的所有对象,通过表格和控件的定位,得到文本框的值。
  • 相关阅读:
    FluentValidation 验证框架笔记1
    AutoMapper 笔记1
    MediatR框架笔记1
    vscode调试python时提示无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方法
    Selenium使用自带浏览器自动化
    Selenium启动Chrome插件(Chrome Extensions)
    Gitee,Github 图片转直链
    CentOS 7.3 修改root密码 passwd: Authentication token manipulation error
    阿里云服务器 被入侵植入dhpcd导致cpu飙升100%问题
    Github 切换分支
  • 原文地址:https://www.cnblogs.com/qixin622/p/759255.html
Copyright © 2020-2023  润新知