zoukankan      html  css  js  c++  java
  • 数据控件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中存储当前的所有对象,通过表格和控件的定位,得到文本框的值。
  • 相关阅读:
    用 ArcMap 发布 ArcGIS Server FeatureServer Feature Access 服务 PostgreSQL 版本
    ArcMap 发布 ArcGIS Server OGC(WMSServer,MapServer)服务
    ArcScene 创建三维模型数据
    ArcMap 导入自定义样式Symbols
    ArcMap 导入 CGCS2000 线段数据
    ArcMap 导入 CGCS2000 点坐标数据
    ArcGis Server manager 忘记用户名和密码
    The view or its master was not found or no view engine supports the searched locations
    python小记(3)操作文件
    pytest(2) pytest与unittest的区别
  • 原文地址:https://www.cnblogs.com/qixin622/p/759255.html
Copyright © 2011-2022 走看看