GridView 使用方法总结 (二)

      接着上面GridView 使用方法总结 (一) http://www.cnblogs.com/sufei/archive/2010/03/27/1698590.html#commentform

的内容开始吧。

 

14.GridView固定表头(不用javascript只用CSS!,很好用)

前台代码

ExpandedBlockStart.gif 代码
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title > GridView固定表头 清清月儿http://blog.csdn.net/21aspnet  </ title >
        
< style >  
.Freezing 
   
{  
    
   position
: relative  ;  
   table-layout
: fixed ;
   top
: expression(this.offsetParent.scrollTop) ;    
   z-index
:  10 ;
   
}  

.Freezing th
{ text-overflow : ellipsis ; overflow : hidden ; white-space :  nowrap ; padding : 2px ; }
</ style >  
</ head >
< body  style ="font-size=12px" >
    
< form  id ="form1"  runat ="server" >
    
< div  style ="overflow-y: scroll; height: 200px;width:300px"  id ="dvBody" >
                   
< asp:GridView  ID ="GridView1"  runat ="server"     AutoGenerateColumns ="False"  CellPadding ="3"  OnRowDeleting ="GridView1_RowDeleting"  OnRowEditing ="GridView1_RowEditing"
                        OnRowUpdating
="GridView1_RowUpdating"  OnRowCancelingEdit ="GridView1_RowCancelingEdit"  BackColor ="White"  BorderColor ="#CCCCCC"  BorderStyle ="None"  BorderWidth ="1px"  Font-Size ="12px"  OnRowCreated ="GridView1_RowCreated"    >
                        
< FooterStyle  BackColor ="White"  ForeColor ="#000066"   />
                        
< Columns >
                            
< asp:BoundField  DataField ="身份证号码"  HeaderText ="编号"  ReadOnly ="True"   />
                            
< asp:BoundField  DataField ="邮政编码"  HeaderText ="邮政编码"  SortExpression ="邮政编码"   />
                            
< asp:BoundField  DataField ="家庭住址"  HeaderText ="家庭住址"    />
                            
< asp:BoundField  DataField ="姓名"  HeaderText ="姓名"    />
                            
                        
</ Columns >
                        
< RowStyle  ForeColor ="#000066"   />
                        
< SelectedRowStyle  BackColor ="#669999"  Font-Bold ="True"  ForeColor ="White"   />
                        
< PagerStyle  BackColor ="White"  ForeColor ="#000066"  HorizontalAlign ="Left"   CssClass ="ms-formlabel DataGridFixedHeader" />
                        
< HeaderStyle  BackColor ="#006699"  Font-Bold ="True"  ForeColor ="White"  CssClass ="Freezing" />
                    
</ asp:GridView >
        
</ div >

    
</ form >
</ body >
</ html >

 

用法:CSS设如上的样式,HeaderStyle加CssClass="Freezing,套住GridView的Div设置高度宽度 <div style="overflow-y: scroll; height: 200px;width:200px" >

 

15.GridView合并表头多重表头无错完美版(以合并3列3行举例)

后台代码

 

 

ExpandedBlockStart.gif 代码
using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  System.Data.SqlClient;
using  System.Drawing;
public   partial   class  _Default : System.Web.UI.Page 
{
    SqlConnection sqlcon;
    SqlCommand sqlcom;
    
string  strCon  =   " Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa " ;
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
if  ( ! IsPostBack)
        {
            bind();
            
        }
    }
    
protected   void  GridView1_RowEditing( object  sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex 
=  e.NewEditIndex;
        bind();
    }
    
protected   void  GridView1_RowUpdating( object  sender, GridViewUpdateEventArgs e)
    {
        sqlcon 
=   new  SqlConnection(strCon);
        
string  sqlstr  =   " update 飞狐工作室 set 姓名=' "
            
+  ((TextBox)(GridView1.Rows[e.RowIndex].Cells[ 1 ].Controls[ 0 ])).Text.ToString().Trim()  +   " ',家庭住址=' "
            
+  ((TextBox)(GridView1.Rows[e.RowIndex].Cells[ 3 ].Controls[ 0 ])).Text.ToString().Trim()  +   " ' where 身份证号码=' "  
            
+  GridView1.DataKeys[e.RowIndex].Value.ToString()  +   " ' " ;
        sqlcom
= new  SqlCommand(sqlstr,sqlcon);
        sqlcon.Open();
        sqlcom.ExecuteNonQuery();
        sqlcon.Close();
        GridView1.EditIndex 
=   - 1 ;
        bind();
    }
    
protected   void  GridView1_RowCancelingEdit( object  sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex 
=   - 1 ;
        bind();
    }
    
public   void  bind()
    {
        
string  sqlstr  =   " select top 10 * from 飞狐工作室 " ;
        sqlcon 
=   new  SqlConnection(strCon);
        SqlDataAdapter myda 
=   new  SqlDataAdapter(sqlstr, sqlcon);
        DataSet myds 
=   new  DataSet();
        sqlcon.Open();
        myda.Fill(myds, 
" 飞狐工作室 " );
        GridView1.DataSource 
=  myds;
        GridView1.DataKeyNames 
=   new   string [] {  " 身份证号码 "  };
        GridView1.DataBind();
        sqlcon.Close();
    }

// 这里就是解决方案
     protected   void  GridView1_RowCreated( object  sender, GridViewRowEventArgs e)
    {
        
switch  (e.Row.RowType)
        {
            
case  DataControlRowType.Header:
                
// 第一行表头
                TableCellCollection tcHeader  =  e.Row.Cells;
                tcHeader.Clear();
                tcHeader.Add(
new  TableHeaderCell());
                tcHeader[
0 ].Attributes.Add( " rowspan " " 3 " );  // 跨Row
                tcHeader[ 0 ].Attributes.Add( " bgcolor " " white " );
                tcHeader[
0 ].Text  =   "" ;
                tcHeader.Add(
new  TableHeaderCell());
                
// tcHeader[1].Attributes.Add("bgcolor", "Red");
                tcHeader[ 1 ].Attributes.Add( " colspan " " 6 " );  // 跨Column
                tcHeader[ 1 ].Text  =   " 全部信息</th></tr><tr> " ;

                
// 第二行表头
                tcHeader.Add( new  TableHeaderCell());
                tcHeader[
2 ].Attributes.Add( " bgcolor " " DarkSeaGreen " );
                tcHeader[
2 ].Text  =   " 身份证号码 " ;
                tcHeader.Add(
new  TableHeaderCell());
                tcHeader[
3 ].Attributes.Add( " bgcolor " " LightSteelBlue " );
                tcHeader[
3 ].Attributes.Add( " colspan " " 2 " );
                tcHeader[
3 ].Text  =   " 基本信息 " ;
                tcHeader.Add(
new  TableHeaderCell());
                tcHeader[
4 ].Attributes.Add( " bgcolor " " DarkSeaGreen " );
                tcHeader[
4 ].Text  =   " 福利 " ;
                tcHeader.Add(
new  TableHeaderCell());
                tcHeader[
5 ].Attributes.Add( " bgcolor " " LightSteelBlue " );
                tcHeader[
5 ].Attributes.Add( " colspan " " 2 " );
                tcHeader[
5 ].Text  =   " 联系方式</th></tr><tr> " ;

                
// 第三行表头
                tcHeader.Add( new  TableHeaderCell());
                tcHeader[
6 ].Attributes.Add( " bgcolor " " Khaki " );
                tcHeader[
6 ].Text  =   " 身份证号码 " ;
                tcHeader.Add(
new  TableHeaderCell());
                tcHeader[
7 ].Attributes.Add( " bgcolor " " Khaki " );
                tcHeader[
7 ].Text  =   " 姓名 " ;
                tcHeader.Add(
new  TableHeaderCell());
                tcHeader[
8 ].Attributes.Add( " bgcolor " " Khaki " );
                tcHeader[
8 ].Text  =   " 出生日期 " ;
                tcHeader.Add(
new  TableHeaderCell());
                tcHeader[
9 ].Attributes.Add( " bgcolor " " Khaki " );
                tcHeader[
9 ].Text  =   " 薪水 " ;
                tcHeader.Add(
new  TableHeaderCell());
                tcHeader[
10 ].Attributes.Add( " bgcolor " " Khaki " );
                tcHeader[
10 ].Text  =   " 家庭住址 " ;
                tcHeader.Add(
new  TableHeaderCell());
                tcHeader[
11 ].Attributes.Add( " bgcolor " " Khaki " );
                tcHeader[
11 ].Text  =   " 邮政编码 " ;
                
break ;
        }
    }
}

 

前台代码

 

ExpandedBlockStart.gif 代码
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title > GridView合并多重表头表头 清清月儿http://blog.csdn.net/21aspnet  </ title >
</ head >
< body  >
    
< form  id ="form1"  runat ="server" >
    
< div   >
                   
< asp:GridView  ID ="GridView1"  runat ="server"     AutoGenerateColumns ="False"  CellPadding ="3"   OnRowEditing ="GridView1_RowEditing"
                        OnRowUpdating
="GridView1_RowUpdating"  OnRowCancelingEdit ="GridView1_RowCancelingEdit"  BackColor ="White"  BorderColor ="#CCCCCC"  BorderStyle ="None"  BorderWidth ="1px"  Font-Size ="12px"  OnRowCreated ="GridView1_RowCreated"    >
                        
< FooterStyle  BackColor ="White"  ForeColor ="#000066"   />
                        
< Columns >
                            
< asp:CommandField  HeaderText ="编辑"  ShowEditButton ="True"   />
                            
< asp:BoundField  DataField ="身份证号码"  HeaderText ="编号"  ReadOnly ="True"   />
                            
< asp:BoundField  DataField ="姓名"  HeaderText ="姓名"    />
                            
< asp:BoundField  DataField ="出生日期"  HeaderText ="邮政编码"    />
                             
< asp:BoundField  DataField ="起薪"  HeaderText ="起薪"    />
                            
< asp:BoundField  DataField ="家庭住址"  HeaderText ="家庭住址"    />
                            
< asp:BoundField  DataField ="邮政编码"  HeaderText ="邮政编码"   />
                           
                        
</ Columns >
                        
< RowStyle  ForeColor ="#000066"   />
                        
< SelectedRowStyle  BackColor ="#669999"  Font-Bold ="True"  ForeColor ="White"   />
                        
< PagerStyle  BackColor ="White"  ForeColor ="#000066"  HorizontalAlign ="Left"   CssClass ="ms-formlabel DataGridFixedHeader" />
                        
< HeaderStyle  BackColor ="#006699"  Font-Bold ="True"  ForeColor ="White"   />
                    
</ asp:GridView >
        
</ div >

    
</ form >
</ body >
</ html >


 

 

 

16.GridView突出显示某一单元格(例如金额低于多少,分数不及格等)

解决方案:主要是绑定后过滤

 

ExpandedBlockStart.gif 代码
GridView1.DataBind();
        
for  ( int  i  =   0 ; i  <=  GridView1.Rows.Count  -   1 ; i ++ )
        {
            DataRowView mydrv 
=  myds.Tables[ " 飞狐工作室 " ].DefaultView[i];
            
string  score  =  Convert.ToString(mydrv[ " 起薪 " ]);
            
if  (Convert.ToDouble(score)  <   34297.00 ) // 大家这里根据具体情况设置可能ToInt32等等
            {
                GridView1.Rows[i].Cells[
4 ].BackColor  =  System.Drawing.Color.Red;
            }
        }
        sqlcon.Close();

 

所有后台代码

 

ExpandedBlockStart.gif 代码
using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  System.Data.SqlClient;
using  System.Drawing;

public   partial   class  Default7 : System.Web.UI.Page
{
    SqlConnection sqlcon;
    SqlCommand sqlcom;
    
string  strCon  =   " Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa " ;
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
if  ( ! IsPostBack)
        {
            bind();

        }
    }
    
protected   void  GridView1_RowEditing( object  sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex 
=  e.NewEditIndex;
        bind();
    }
    
protected   void  GridView1_RowUpdating( object  sender, GridViewUpdateEventArgs e)
    {
        sqlcon 
=   new  SqlConnection(strCon);
        
string  sqlstr  =   " update 飞狐工作室 set 姓名=' "
            
+  ((TextBox)(GridView1.Rows[e.RowIndex].Cells[ 1 ].Controls[ 0 ])).Text.ToString().Trim()  +   " ',家庭住址=' "
            
+  ((TextBox)(GridView1.Rows[e.RowIndex].Cells[ 3 ].Controls[ 0 ])).Text.ToString().Trim()  +   " ' where 身份证号码=' "
            
+  GridView1.DataKeys[e.RowIndex].Value.ToString()  +   " ' " ;
        sqlcom 
=   new  SqlCommand(sqlstr, sqlcon);
        sqlcon.Open();
        sqlcom.ExecuteNonQuery();
        sqlcon.Close();
        GridView1.EditIndex 
=   - 1 ;
        bind();
    }
    
protected   void  GridView1_RowCancelingEdit( object  sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex 
=   - 1 ;
        bind();
    }
    
public   void  bind()
    {
        
string  sqlstr  =   " select top 10 * from 飞狐工作室 " ;
        sqlcon 
=   new  SqlConnection(strCon);
        SqlDataAdapter myda 
=   new  SqlDataAdapter(sqlstr, sqlcon);
        DataSet myds 
=   new  DataSet();
        sqlcon.Open();
        myda.Fill(myds, 
" 飞狐工作室 " );
        GridView1.DataSource 
=  myds;
        GridView1.DataKeyNames 
=   new   string [] {  " 身份证号码 "  };
        GridView1.DataBind();
        
for  ( int  i  =   0 ; i  <=  GridView1.Rows.Count  -   1 ; i ++ )
        {
            DataRowView mydrv 
=  myds.Tables[ " 飞狐工作室 " ].DefaultView[i];
            
string  score  =  Convert.ToString(mydrv[ " 起薪 " ]);
            
if  (Convert.ToDouble(score)  <   34297.00 ) // 大家这里根据具体情况设置可能ToInt32等等

            {
                GridView1.Rows[i].Cells[
4 ].BackColor  =  System.Drawing.Color.Red;
            }
        }
        sqlcon.Close();
    }
}

 

前台代码:

 

ExpandedBlockStart.gif 代码
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  id ="Head1"  runat ="server" >
    
< title > GridView突出显示某一单元格 清清月儿http://blog.csdn.net/21aspnet  </ title >
</ head >
< body  >
    
< form  id ="form1"  runat ="server" >
    
< div   >
                   
< asp:GridView  ID ="GridView1"  runat ="server"     AutoGenerateColumns ="False"  CellPadding ="3"   OnRowEditing ="GridView1_RowEditing"
                        OnRowUpdating
="GridView1_RowUpdating"  OnRowCancelingEdit ="GridView1_RowCancelingEdit"  BackColor ="White"  BorderColor ="#CCCCCC"  BorderStyle ="None"  BorderWidth ="1px"  Font-Size ="12px"    >
                        
< FooterStyle  BackColor ="White"  ForeColor ="#000066"   />
                        
< Columns >
                            
< asp:CommandField  HeaderText ="编辑"  ShowEditButton ="True"   />
                            
< asp:BoundField  DataField ="身份证号码"  HeaderText ="编号"  ReadOnly ="True"   />
                            
< asp:BoundField  DataField ="姓名"  HeaderText ="姓名"    />
                            
< asp:BoundField  DataField ="出生日期"  HeaderText ="邮政编码"    />
                             
< asp:BoundField  DataField ="起薪"  HeaderText ="起薪"   DataFormatString ="{0:C}"  HtmlEncode ="false" />
                            
< asp:BoundField  DataField ="家庭住址"  HeaderText ="家庭住址"    />
                            
< asp:BoundField  DataField ="邮政编码"  HeaderText ="邮政编码"   />
                           
                        
</ Columns >
                        
< RowStyle  ForeColor ="#000066"   />
                        
< SelectedRowStyle  BackColor ="#669999"  Font-Bold ="True"  ForeColor ="White"   />
                        
< PagerStyle  BackColor ="White"  ForeColor ="#000066"  HorizontalAlign ="Left"   CssClass ="ms-formlabel DataGridFixedHeader" />
                        
< HeaderStyle  BackColor ="#006699"  Font-Bold ="True"  ForeColor ="White"   />
                    
</ asp:GridView >
        
</ div >

    
</ form >
</ body >
</ html >

 

17.GridView加入自动求和求平均值小计

 

 

 

解决方法:

 

ExpandedBlockStart.gif 代码
private   double  sum  =   0 ; // 取指定列的数据和,你要根据具体情况对待可能你要处理的是int
protected   void  GridView1_RowDataBound( object  sender, GridViewRowEventArgs e)
    {
        
        
if  (e.Row.RowIndex  >=   0 )
        {
            sum 
+=  Convert.ToDouble(e.Row.Cells[ 6 ].Text);
        }
        
else   if  (e.Row.RowType  ==  DataControlRowType.Footer)
        {
            e.Row.Cells[
5 ].Text  =   " 总薪水为: " ;
            e.Row.Cells[
6 ].Text  =  sum.ToString();
            e.Row.Cells[
3 ].Text  =   " 平均薪水为: " ;
            e.Row.Cells[
4 ].Text  =  (( int )(sum  /  GridView1.Rows.Count)).ToString();
            
        }
    }

 

 

后台所有代码:

 

ExpandedBlockStart.gif 代码
using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  System.Data.SqlClient;
using  System.Drawing;

public   partial   class  Default7 : System.Web.UI.Page
{
    SqlConnection sqlcon;
    SqlCommand sqlcom;
    
string  strCon  =   " Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa " ;
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
if  ( ! IsPostBack)
        {
            bind();

        }
    }
    
protected   void  GridView1_RowEditing( object  sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex 
=  e.NewEditIndex;
        bind();
    }
    
protected   void  GridView1_RowUpdating( object  sender, GridViewUpdateEventArgs e)
    {
        sqlcon 
=   new  SqlConnection(strCon);
        
string  sqlstr  =   " update 飞狐工作室 set 姓名=' "
            
+  ((TextBox)(GridView1.Rows[e.RowIndex].Cells[ 1 ].Controls[ 0 ])).Text.ToString().Trim()  +   " ',家庭住址=' "
            
+  ((TextBox)(GridView1.Rows[e.RowIndex].Cells[ 3 ].Controls[ 0 ])).Text.ToString().Trim()  +   " ' where 身份证号码=' "
            
+  GridView1.DataKeys[e.RowIndex].Value.ToString()  +   " ' " ;
        sqlcom 
=   new  SqlCommand(sqlstr, sqlcon);
        sqlcon.Open();
        sqlcom.ExecuteNonQuery();
        sqlcon.Close();
        GridView1.EditIndex 
=   - 1 ;
        bind();
    }
    
protected   void  GridView1_RowCancelingEdit( object  sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex 
=   - 1 ;
        bind();
    }
    
public   void  bind()
    {
        
string  sqlstr  =   " select top 5 * from 飞狐工作室 " ;
        sqlcon 
=   new  SqlConnection(strCon);
        SqlDataAdapter myda 
=   new  SqlDataAdapter(sqlstr, sqlcon);
        DataSet myds 
=   new  DataSet();
        sqlcon.Open();
        myda.Fill(myds, 
" 飞狐工作室 " );
        GridView1.DataSource 
=  myds;
        GridView1.DataKeyNames 
=   new   string [] {  " 身份证号码 "  };
        GridView1.DataBind();
        sqlcon.Close();
    }
    
private   double  sum  =   0 ; // 取指定列的数据和
     protected   void  GridView1_RowDataBound( object  sender, GridViewRowEventArgs e)
    {
        
        
if  (e.Row.RowIndex  >=   0 )
        {
            sum 
+=  Convert.ToDouble(e.Row.Cells[ 6 ].Text);
        }
        
else   if  (e.Row.RowType  ==  DataControlRowType.Footer)
        {
            e.Row.Cells[
5 ].Text  =   " 总薪水为: " ;
            e.Row.Cells[
6 ].Text  =  sum.ToString();
            e.Row.Cells[
3 ].Text  =   " 平均薪水为: " ;
            e.Row.Cells[
4 ].Text  =  (( int )(sum  /  GridView1.Rows.Count)).ToString();
            
        }
    }
}

 

 

前台:唯一的花头就是设置ShowFooter="True" ,否则默认表头为隐藏的!

 

ExpandedBlockStart.gif 代码
< asp:GridView  ID ="GridView1"  runat ="server"     AutoGenerateColumns ="False"  CellPadding ="3"   OnRowEditing ="GridView1_RowEditing"
                        OnRowUpdating
="GridView1_RowUpdating"  OnRowCancelingEdit ="GridView1_RowCancelingEdit"  BackColor ="White"  BorderColor ="#CCCCCC"  BorderStyle ="None"  BorderWidth ="1px"  Font-Size ="12px"  OnRowDataBound ="GridView1_RowDataBound"  ShowFooter ="True"    >
                        
< FooterStyle  BackColor ="White"  ForeColor ="#000066"   />
                        
< Columns >
                            
< asp:CommandField  HeaderText ="编辑"  ShowEditButton ="True"   />
                            
< asp:BoundField  DataField ="身份证号码"  HeaderText ="编号"  ReadOnly ="True"   />
                            
< asp:BoundField  DataField ="姓名"  HeaderText ="姓名"    />
                            
< asp:BoundField  DataField ="出生日期"  HeaderText ="邮政编码"    />
                            
< asp:BoundField  DataField ="家庭住址"  HeaderText ="家庭住址"    />
                            
< asp:BoundField  DataField ="邮政编码"  HeaderText ="邮政编码"   />
                            
< asp:BoundField  DataField ="起薪"  HeaderText ="起薪"    />
                           
                        
</ Columns >
                        
< RowStyle  ForeColor ="#000066"   />
                        
< SelectedRowStyle  BackColor ="#669999"  Font-Bold ="True"  ForeColor ="White"   />
                        
< PagerStyle  BackColor ="White"  ForeColor ="#000066"  HorizontalAlign ="Left"   CssClass ="ms-formlabel DataGridFixedHeader" />
                        
< HeaderStyle  BackColor ="#006699"  Font-Bold ="True"  ForeColor ="White"   />
                    
</ asp:GridView >

 


18.GridView数据导入Excel/Excel数据读入GridView

页面增加一个按钮,单击事件添加如下方法:

ExpandedBlockStart.gif 代码
protected   void  Button1_Click( object  sender, EventArgs e)
    {
        Export(
" application/ms-excel " " 学生成绩报表.xls " );
    }

    
private   void  Export( string  FileType,  string  FileName)
    {
        Response.Charset 
=   " GB2312 " ;
        Response.ContentEncoding 
=  System.Text.Encoding.UTF7;
        Response.AppendHeader(
" Content-Disposition " " attachment;filename= "   +  HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
        Response.ContentType 
=  FileType;
        
this .EnableViewState  =   false ;
        StringWriter tw 
=   new  StringWriter();
        HtmlTextWriter hw 
=   new  HtmlTextWriter(tw);
        GridView1.RenderControl(hw);
        Response.Write(tw.ToString());
        Response.End();
    }


 

 

//如果没有下面方法会报错 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
   
public override void VerifyRenderingInServerForm(Control control)
    {
    }
还有由于是文件操作所以要引入名称空间IO和Text

后台代码:

ExpandedBlockStart.gif 代码
using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  System.Data.SqlClient;
using  System.Drawing;
using  System.IO;
using  System.Text;
public   partial   class  Default7 : System.Web.UI.Page
{
    SqlConnection sqlcon;
    SqlCommand sqlcom;
    
string  strCon  =   " Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa " ;
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
if  ( ! IsPostBack)
        {
            bind();

        }
    }
    
    
public   void  bind()
    {
        
string  sqlstr  =   " select top 5 * from 飞狐工作室 " ;
        sqlcon 
=   new  SqlConnection(strCon);
        SqlDataAdapter myda 
=   new  SqlDataAdapter(sqlstr, sqlcon);
        DataSet myds 
=   new  DataSet();
        sqlcon.Open();
        myda.Fill(myds, 
" 飞狐工作室 " );
        GridView1.DataSource 
=  myds;
        GridView1.DataKeyNames 
=   new   string [] {  " 身份证号码 "  };
        GridView1.DataBind();
        sqlcon.Close();
    }

    
protected   void  Button1_Click( object  sender, EventArgs e)
    {
        Export(
" application/ms-excel " " 学生成绩报表.xls " );
    }

    
private   void  Export( string  FileType,  string  FileName)
    {
        Response.Charset 
=   " GB2312 " ;
        Response.ContentEncoding 
=  System.Text.Encoding.UTF7;
        Response.AppendHeader(
" Content-Disposition " " attachment;filename= "   +  HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
        Response.ContentType 
=  FileType;
        
this .EnableViewState  =   false ;
        StringWriter tw 
=   new  StringWriter();
        HtmlTextWriter hw 
=   new  HtmlTextWriter(tw);
        GridView1.RenderControl(hw);
        Response.Write(tw.ToString());
        Response.End();
    }
    
public   override   void  VerifyRenderingInServerForm(Control control)
    {
    }
    
}

 

前台

 

ExpandedBlockStart.gif 代码
< asp:GridView  ID ="GridView1"  runat ="server"     AutoGenerateColumns ="False"  CellPadding ="3"   
                         BackColor
="White"  BorderColor ="#CCCCCC"  BorderStyle ="None"  BorderWidth ="1px"  Font-Size ="12px"     >
                        
< FooterStyle  BackColor ="White"  ForeColor ="#000066"   />
                        
< Columns >
                            
< asp:BoundField  DataField ="身份证号码"  HeaderText ="编号"  ReadOnly ="True"   />
                            
< asp:BoundField  DataField ="姓名"  HeaderText ="姓名"    />
                            
< asp:BoundField  DataField ="出生日期"  HeaderText ="邮政编码"    />
                            
< asp:BoundField  DataField ="家庭住址"  HeaderText ="家庭住址"    />
                            
< asp:BoundField  DataField ="邮政编码"  HeaderText ="邮政编码"   />
                            
< asp:BoundField  DataField ="起薪"  HeaderText ="起薪"    />
                           
                        
</ Columns >
                        
< RowStyle  ForeColor ="#000066"   />
                        
< SelectedRowStyle  BackColor ="#669999"  Font-Bold ="True"  ForeColor ="White"   />
                        
< PagerStyle  BackColor ="White"  ForeColor ="#000066"  HorizontalAlign ="Left"   CssClass ="ms-formlabel DataGridFixedHeader" />
                        
< HeaderStyle  BackColor ="#006699"  Font-Bold ="True"  ForeColor ="White"   />
                    
</ asp:GridView >
        
< asp:Button  ID ="Button1"  runat ="server"  OnClick ="Button1_Click"  Text ="导出"   />

读取Excel数据的代码:这个很简单的
private DataSet CreateDataSource()
    {
        string strCon;
        strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("excel.xls") + "; Extended Properties=Excel 8.0;";
        OleDbConnection olecon = new OleDbConnection(strCon);
        OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strCon);
        DataSet myds = new DataSet();
        myda.Fill(myds);
        return myds;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        GridView1.DataSource = CreateDataSource();
        GridView1.DataBind();
    }


 

 

由于时间关系,这个文章先到此。有时间再写,其实还有很多技巧,不过我觉得如果能融汇贯通应该可以举一反三

 

 

--------------------------------------------------------------------------------------------------------------------------------

文章到这里算是把月儿老师的文章整理完了

应该说说我的想法了,呵呵,真多啊,月儿老师真能写,呵呵

  月儿老师呢没有使用Sqlhelper或是什么三层工厂等更高一级的东西,只是使用简单直接的方法来实现 功能 ,让大家明白这个功能可以实现,但是大家一定不要以为

老师只会这些,其实老师是想让高手看方法,水平一般的可以得到启示,而刚入门的可以直接拿来用并得到提高,我感觉应该是这样意吧

   如果写的太深了初学都就看不明白了,而水平高点的会感觉不舒服,高手会不绡于看,因为他们也会。

 

   月儿老师的最后一项   18.GridView数据导入Excel/Excel数据读入GridView

   说到导入大家一定能想到导出的功能 ,在C# 将数据导出到Excel汇总 http://www.cnblogs.com/sufei/archive/2009/05/23/1487540.html

这里有总结的不少导出的方法有兴趣的朋友可以去看看。

     关于Gridview的使用我也写过一个,不过写的没有这么详细,可以参考 一下

1.解决DataGridView绑定List后不能排序的问题

http://www.cnblogs.com/sufei/archive/2010/02/04/1663125.html

2.为gridview“删除”列添加确认对话框的方法

http://www.cnblogs.com/sufei/archive/2009/06/10/1500254.html

3.详解Asp.Net Sql数据库连接字符串

http://www.cnblogs.com/sufei/archive/2009/06/02/1494758.html

这里强说不是写的Girdview的但是这个问题很容易碰到加个导航吧在这里

4.GridView的精妙使用

http://www.cnblogs.com/sufei/archive/2009/03/14/1485995.html

  

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值