数据控件-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中存储当前的所有对象,通过表格和控件的定位,得到文本框的值。

转载于:https://www.cnblogs.com/qixin622/archive/2007/05/25/759255.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值