• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    灵活掌握asp.net中gridview控件的多种使用方法(下)

    继续上篇文章的学习《灵活掌握asp.net中gridview控件的多种使用方法(上)》,在此基础上巩固gridview控件的操作使用,更上一层楼。

    11.GridView实现用“...”代替超长字符串:
    效果图:

     

    解决方法:数据绑定后过滤每一行即可

    for (int i = 0; i = GridView1.Rows.Count - 1; i++)
    {
    DataRowView mydrv;
    string gIntro;
    if (GridView1.PageIndex == 0)
    {
    mydrv = myds.Tables["飞狐工作室"].DefaultView[i];//表名
    gIntro = Convert.ToString(mydrv["家庭住址"]);//所要处理的字段
    GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
    }
    else
    {
    mydrv = myds.Tables["飞狐工作室"].DefaultView[i + (5 * GridView1.PageIndex)];
    gIntro = Convert.ToString(mydrv["家庭住址"]);
    GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
    }
    }

    调用的方法:

    public string SubStr(string sString, int nLeng)
    {
    if (sString.Length = nLeng)
    {
    return sString;
    }
    string sNewStr = sString.Substring(0, nLeng);
    sNewStr = sNewStr + "...";
    return sNewStr;
    }
    
    

    后台全部代码:

    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;
    
    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)
    {
    ViewState["SortOrder"] = "身份证号码";
    ViewState["OrderDire"] = "ASC";
    bind();
    }
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
    GridView1.EditIndex = e.NewEditIndex;
    bind();
    }
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
    string sqlstr = "delete from 飞狐工作室 where 身份证号码='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
    sqlcon = new SqlConnection(strCon);
    sqlcom = new SqlCommand(sqlstr,sqlcon);
    sqlcon.Open();
    sqlcom.ExecuteNonQuery();
    sqlcon.Close();
    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();
    for (int i = 0; i = GridView1.Rows.Count - 1; i++)
    {
    DataRowView mydrv;
    string gIntro;
    if (GridView1.PageIndex == 0)
    {
    mydrv = myds.Tables["飞狐工作室"].DefaultView[i];
    gIntro = Convert.ToString(mydrv["家庭住址"]);
    GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
    }
    else
    {
    mydrv = myds.Tables["飞狐工作室"].DefaultView[i + (5 * GridView1.PageIndex)];
    gIntro = Convert.ToString(mydrv["家庭住址"]);
    GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
    }
    }
    
    sqlcon.Close();
    }
    public string SubStr(string sString, int nLeng)
    {
    if (sString.Length = nLeng)
    {
    return sString;
    }
    string sNewStr = sString.Substring(0, nLeng);
    sNewStr = sNewStr + "...";
    return sNewStr;
    }
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    //如果是绑定数据行
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
    ////鼠标经过时,行背景色变
    //e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#E6F5FA'");
    ////鼠标移出时,行背景色变
    //e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");
    
    ////当有编辑列时,避免出错,要加的RowState判断
    //if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
    //{
    // ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:/"" + e.Row.Cells[1].Text + "/"吗?')");
    //}
    
    }
    if (e.Row.RowIndex != -1)
    {
    int id = e.Row.RowIndex + 1;
    e.Row.Cells[0].Text = id.ToString();
    }
    
    }
    }
    
    

    12.GridView一般换行与强制换行:

    效果图:

     

    首先设置asp:BoundField DataField="家庭住址" HeaderText="家庭住址" ItemStyle-Width="100" />
    gridview里有一列绑定的数据很长,显示的时候在一行里面显示,页面拉得很宽。
    原因是连续英文段为一个整体导致的,在RowDataBound中添加上了一句e.Row.Cells[2].Style.Add("word-break", "break-all")就可以。

    如果要给所有的列增加此属性:

    protected void Page_Load(object sender, EventArgs e)
    {
    //正常换行
    GridView1.Attributes.Add("style", "word-break:keep-all;word-wrap:normal");
    //下面这行是自动换行
    GridView1.Attributes.Add("style", "word-break:break-all;word-wrap:break-word");
    if (!IsPostBack)
    {
    bind();//调用数据绑定即可
    }
    }

    总之:善用CSS的word-break:break-all;word-wrap:break-word属性即可,这个属性是通用的对于顽固的南换行问题都可以解决,不局限于GridView。

    13.GridView显示隐藏某一列:
    本方案为月儿独创,不同于网上其他方式,我觉得用一个CheckBox更人性化,这样可以隐藏不必要的列,让用户自己选择需要出现的列,在处理多列时这是一个很好的解决方案!

    效果图:

    图1-开始 

    图2-点击显示的CheckBox后

    解决方案:

    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();
    GridView1.Columns[3].Visible = false;//一开始隐藏
    CheckBox1.Checked = false;//如果不这样后面的代码会把他True
    }
    
    双击CheckBox1,在CheckedChanged方法里写上代码,最后代码如下:
    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
    GridView1.Columns[3].Visible=! GridView1.Columns[3].Visible;
    Response.Write("GridView1的第4列现在的显示隐藏状态是:"+GridView1.Columns[3].Visible.ToString());
    }
    
    

    注意:CheckBox1的AutoPostBack要True!

    后台全部代码如下:

    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;
    
    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)
    {
    ViewState["SortOrder"] = "身份证号码";
    ViewState["OrderDire"] = "ASC";
    bind();
    }
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
    GridView1.EditIndex = e.NewEditIndex;
    bind();
    }
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
    string sqlstr = "delete from 飞狐工作室 where 身份证号码='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
    sqlcon = new SqlConnection(strCon);
    sqlcom = new SqlCommand(sqlstr,sqlcon);
    sqlcon.Open();
    sqlcom.ExecuteNonQuery();
    sqlcon.Close();
    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();
    GridView1.Columns[3].Visible = false;
    CheckBox1.Checked = false;
    }
    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
    GridView1.Columns[3].Visible=! GridView1.Columns[3].Visible;
    Response.Write("GridView1的第4列现在的显示隐藏状态是:"+GridView1.Columns[3].Visible.ToString());
    }
    }
    
    

    前台代码:

    !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显示隐藏列 /title>
    /head>
    body style="font-size=12px">
    form id="form1" runat="server">
    div>
    asp:GridView ID="GridView1" runat="server" 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" >
    FooterStyle BackColor="White" ForeColor="#000066" />
    Columns>
    asp:BoundField DataField="身份证号码" HeaderText="编号" ReadOnly="True" />
    asp:BoundField DataField="姓名" HeaderText="用户姓名" />
    asp:BoundField DataField="邮政编码" HeaderText="邮政编码" SortExpression="邮政编码" />
    asp:BoundField DataField="家庭住址" HeaderText="家庭住址" />
    asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    asp:CommandField HeaderText="编辑" ShowEditButton="True" />
    asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
    /Columns>
    RowStyle ForeColor="#000066" />
    SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
    PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
    HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
    /asp:GridView>
    asp:CheckBox ID="CheckBox1" runat="server" Font-Size="12px"
    OnCheckedChanged="CheckBox1_CheckedChanged" Text="显示隐藏家庭住址" />/div>
    /form>
    /body>
    /html>

    14.GridView弹出新页面/弹出制定大小位置新窗口:

    效果图:

    方案一:简单的方法,新窗口不固定大小

    asp:GridView ID="GridView1" runat="server" 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" >
    FooterStyle BackColor="White" ForeColor="#000066" />
    Columns>
    asp:BoundField DataField="身份证号码" HeaderText="编号" ReadOnly="True" />
    asp:BoundField DataField="邮政编码" HeaderText="邮政编码" SortExpression="邮政编码" />
    asp:BoundField DataField="家庭住址" HeaderText="家庭住址" />
    asp:HyperLinkField HeaderText="姓名" Text="姓名" DataNavigateUrlFields="姓名" DataNavigateUrlFormatString="Default6.aspx?GoodsID={0}" Target="mainframe" NavigateUrl="~/Default6.aspx" DataTextField="姓名" >
    /asp:HyperLinkField>
    asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    asp:CommandField HeaderText="编辑" ShowEditButton="True" />
    asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
    /Columns>
    RowStyle ForeColor="#000066" />
    SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
    PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
    HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
    /asp:GridView>
    

    DataNavigateUrlFields是链接的字段名,DataNavigateUrlFormatString是路径。

    方案二:精确控制弹出窗口大小位置

    asp:HyperLinkColumn DataNavigateUrlField="EmployeeID" DataNavigateUrlFormatString="javascript:varwin=window.open('detail.aspx?ID={0}',null,'width=300,height=200');window.Close();"
    DataTextField="LastName" HeaderText="LastName">/asp:HyperLinkColumn>
    

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

    效果图:

    代码:

    !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固定表头/title>
    style>
    .Freezing
    {
    
    position:relative ;
    table-layout:fixed;
    top:expression_r(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" 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" >

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

    效果图:

    后台代码:

    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;
    }
    }
    }
    
    

    前台:

    !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合并多重表头表头/title>
    /head>
    body >
    form id="form1" runat="server">
    div >
    asp:GridView ID="GridView1" runat="server" 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>

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

    效果图:

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

    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();

    全部后台代码:

    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();
    }
    }
    
    

    前台代码:

    !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" 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>
    

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

    效果图:

    解决方案:

    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();
    
    }
    }
    
    

    后台全部代码:

    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" ,否则默认表头为隐藏的!

    asp:GridView ID="GridView1" runat="server" 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>
    

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

    效果图:

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

    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

    后台代码:

    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)
    {
    }
    
    }
    
    

    前台:

    asp:GridView ID="GridView1" runat="server" 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();
    }

    为大家附3个精彩的专题:

    ASP.NET控件使用手册

    ASP.NET数据绑定控件使用汇总

    ASP.NET控件使用汇总

    以上就是关于asp.net中gridview控件的多种使用方法,很全面,目的就是想让亲们玩转gridview控件,希望大家喜欢小编整理的这两篇文章。

    您可能感兴趣的文章:
    • ASP.NET数据绑定之GridView控件
    • 灵活掌握asp.net中gridview控件的多种使用方法(上)
    • asp.net gridview 72般绝技
    • asp.net GridView控件中模板列CheckBox全选、反选、取消
    • asp.net下gridview 批量删除的实现方法
    • Asp.net GridView使用大全(分页实现)
    • asp.net gridview代码绑定
    • asp.net GridView 删除时弹出确认对话框(包括内容提示)
    • Asp.net简单代码设置GridView自适应列宽不变形实现思路与代码
    • 灵活掌握Asp.net MVC中GridView的使用方法
    上一篇:灵活掌握asp.net中gridview控件的多种使用方法(上)
    下一篇:ASP.NET MVC命名空间时引起错误的解决方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    灵活掌握asp.net中gridview控件的多种使用方法(下) 灵活,掌握,asp.net,中,gridview,