现在的位置: 首页 > 综合 > 正文

数据控件-DataGrid数据控件

2013年05月07日 ⁄ 综合 ⁄ 共 9429字 ⁄ 字号 评论关闭
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 
= 

抱歉!评论已关闭.