首先看效果图:

主要实现——

1.前台GridView代码:

<asp:GridView Height="100%" Width="98%" ID="DataGrid1" runat="server" AutoGenerateColumns="False"
EnableModelValidation="True" Font-Size="9pt" style="overflow:scroll"
onrowcommand="DataGrid1_RowCommand" AllowPaging="True"
onpageindexchanging="DataGrid1_PageIndexChanging" PageSize=""
onrowdatabound="DataGrid1_RowDataBound"
>
<Columns>
<asp:TemplateField HeaderText="图片">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false"
CommandArgument ='<%# Eval("SEQ_NO") %>' CommandName="ViewPicture" Text="图片"></asp:LinkButton>
</ItemTemplate>
<HeaderStyle />
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:TemplateField>
<asp:BoundField DataField="CUSTOMS_NAME" HeaderText="关区">
<HeaderStyle></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:BoundField>

主要事件是: onrowdatabound="DataGrid1_RowDataBound"

2.后台代码:

        protected void DataGrid1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//固定标题行列宽
if (e.Row.RowType == DataControlRowType.Header)//当前是标题行
{
//保持列不变形有两种方法:
//方法一是设置cell的自动换行属性为false,方法二是用html标记的方式实现不换行; 就是一个空格,可以让网格线和里面的内容留有一定的距离保持美观。
for (int i = ; i < e.Row.Cells.Count; i++)
{
////方法一:
//e.Row.Cells[i].Text = " " + e.Row.Cells[i].Text + " ";
//e.Row.Cells[i].Wrap = false; //方法二:
e.Row.Cells[i].Text = "<nobr> " + e.Row.Cells[i].Text + " </nobr>";
}
}
else if (e.Row.RowType == DataControlRowType.DataRow)//当前是数据行
{
e.Row.Attributes.Add("onclick", e.Row.ClientID.ToString() + ".checked=true;selectx(this)");//点击行变色
// e.Row.Attributes.Add("onmouseover", "if(this!=prevselitem){this.style.backgroundColor='#Efefef'}");//当鼠标停留时更改背景色
// e.Row.Attributes.Add("onmouseout", "if(this!=prevselitem){this.style.backgroundColor='#ffffff'}");//当鼠标移开时还原背景色
//e.Row.Attributes["style"] = "Cursor:hand"; //设置悬浮鼠标指针形状为"小手"
//GridView1.HeaderRow.Cells[10].Visible = false;
// e.Row.Cells[10].Visible = false;//隐藏选择按钮
//String evt = Page.ClientScript.GetPostBackClientHyperlink(sender as System.Web.UI.WebControls.GridView, "Select$" + e.Row.RowIndex.ToString());
// e.Row.Attributes.Add("onclick", evt);//执行选择行GridView1_SelectedIndexChanged事件 //固定单元格行列宽
for (int i = ; i < e.Row.Cells.Count; i++)
{
////方法一:
//e.Row.Cells[i].Text = " " + e.Row.Cells[i].Text + " ";
e.Row.Cells[i].Wrap = false;
}
} }

注意:针对标题行,方法一和方法二都试用,针对数据行,则只适用方法一,且方法一的 e.Row.Cells[i].Text = " " + e.Row.Cells[i].Text + " ";  要注释掉 ,即前后增加空格不能用,因为数据行如果遇到模板列TemplateField,列中的数据将会被替换成空内容。


选中的单元格变色,需要加上如下JS代码
 <script type="text/javascript">
var prevselitem = null;
function selectx(row) {
if (prevselitem != null) {
prevselitem.style.backgroundColor = '#DDEDFF';
}
row.style.backgroundColor = 'PeachPuff';
prevselitem = row; }
</script>

  

此外,如果想让GridView出现横向滚动条,需要在外面套一个如下的div:

 <div style="width: 100%; height: auto; overflow: scroll;text-align:center;">

 

GridView——标题行自适应单元格列宽与选中单元格变色的更多相关文章

  1. C# Excel行高、列宽、合并单元格、单元格边框线、冻结

    private _Workbook _workBook = null;private Worksheet _workSheet = null;private Excel.Application _ex ...

  2. XtraReport交叉表自适应行高及最佳列宽

    1.自适应行头的行高,绑定CustomRowHeight事件,代码如下: private Graphics gr = Graphics.FromHwnd(IntPtr.Zero); private v ...

  3. excel制作田字格,excel行高磅,列宽1/10英寸;

    打开一个excel表格,发现列宽是行高的4倍: 开始-格式中查看,发现行高14.25磅,列宽8.38*1/10英寸: 网上百度,了解1英寸=72磅: 那么列宽8.38=60.336磅: 60.336英 ...

  4. c# Excel 行高、列宽、合并单元格、单元格边框线、冻结

    http://www.2cto.com/kf/201007/52724.html 新增选择整列: Range = ((Range)(WALeTieSheet.Cells[1, PwCStartCol_ ...

  5. 【转载】jxl操作excel 字体 背景色 合并单元格 列宽等 .

    package com.email.jav; import java.io.File;import java.io.IOException;import java.net.URL; import jx ...

  6. C#导出带有格式的Excel(列宽,合并单元格,显示边框线,加背景颜色等)

    源地址:http://blog.sina.com.cn/s/blog_74f702e60101au55.html 导出excel相关设置:http://blog.csdn.net/wanmingtom ...

  7. dev gridview自动列宽和单元、行、checkbox选中和多选

    #region 自动列宽 for (int I = 0; I < gridView1.Columns.Count; I++) { this.gridView1.BestFitColumns(); ...

  8. 20180429 xlVBA套打单据自适应列宽

    Sub TestAutoAdjustColumnWidthBaseOnModel() Set ModelSheet = ThisWorkbook.Worksheets("单据模板" ...

  9. NPOI自适应列宽

    当本地没有安装Excel,但是又想导出Excel,采用Office插件是行不通的,NPOI是导出Excel的一个开源的插件.在导出Excel后,为了方便阅读,可以才采用自适应列宽的方式使得单元格的宽度 ...

随机推荐

  1. C++_IO与文件4-简单文件的输入与输出

    通过键盘输入和屏幕输出被称为是控制台输入/输出: 更广义上讲控制台的输入/输出也是一种特殊的文件输入/输出: 当使用cin进行输入时,程序将输入视为一系列的字节,其中的每个字节都被解释成字符编码: 不 ...

  2. 动态规划 70.climbing Stairs

    1. 记忆化搜索 - 自上向下的解决问题:使用vector来保存每次计算的结果,如果下次再碰到同样的需要计算的式子就不需要重复计算了. 2. 动态规划 - 自下向上的解决问题 解法一:自顶向下 解法二 ...

  3. 子查询及pymysql

    子查询 子查询指的是当一个查询语句被作为另一个查询语句的条件时,该查询语句就称之为子查询(内层查询) 可以将一个大问题 拆分几个小的问题 然后一步一步来查询 需求:财务不有哪些人 ),sex ),jo ...

  4. 认识CSS中css的三大特性:层叠性、继承性以及优先级

    前端之HTML.CSS(四) CSS CSS三大特性 层叠性:多种样式的叠加,一个属性通过两个选择器设置在同一个元素上,后一个样式会把前一个样式层叠(覆盖).层叠性的两种情况:第一种样式冲突时,后样式 ...

  5. java中的各种修饰符作用范围

    访问修饰符: private 缺省 protected public 作用范围: 访问修饰符\作用范围 所在类 同一包内其他类 其他包内子类 其他包内非子类 private 可以访问 不可以 不可以 ...

  6. Linux分区扩容

    lz在MAC上面使用Linux虚拟机,开始只建了一个分区,挂载在”/”目录下.现在硬盘空间不够了,所以lz就来给这个分区扩容. 首先,当然是要给虚拟机分配更多的硬盘空间喽(lz用的是VMware Fu ...

  7. 121、Django rest framework入门使用

    框架介绍 为你的django平台通过model生成对应的restfull api,并可以通过对应的http接口来进行 post .get.put.delete等操作.本文是也并非入门级别,不会带你去了 ...

  8. Whu 1603——Minimum Sum——————【单个元素贡献、滑窗】

    Problem 1603 - Minimum Sum Time Limit: 2000MS   Memory Limit: 65536KB   Total Submit: 623  Accepted: ...

  9. 配置phpstudy+phpstorm+xdebug环境

    phpstorm版本: phpstudy版本: 具体的debug配置流程其实phpstorm里面已经明确的说过了,就是下图所示 所以 第一步: 首先要在phpstudy中开启xdebug扩展,所以要修 ...

  10. 前端测试框架 puppeteer 文档翻译

    puppeteer puppeteer 是一个通过DevTools 协议提供高级API 来控制 chrome,chromium 的 NODE库; puppeteer默认运行在 headless 模式, ...