分享

固定GRIDVIEW的列宽

 谷忙 2011-04-16

二话不说先上图:

 

1.字段较少时:

 

 

 

效果如下:

 

 

 

各列的宽度正常,都是按设置显示的。

 

当字段较多时:

 

 

 

为了能在屏幕上全部显示出来各个字段都挤在了一块,设置的DIV的滑动不起作用。

 

后台绑定各字段的代码:

 

BoundField bf = new BoundField();

                        bf.DataField = title_info[2,j];

                        bf.HeaderText = title_info[4,j];

                        bf.HeaderStyle.Width =Convert.ToInt32(title_info[6,j]);

                        bf.ItemStyle.Width = Convert.ToInt32(title_info[6, j]);

                        bf.HeaderStyle.BackColor = System.Drawing.Color.LightSteelBlue;

                        //bf.HeaderStyle.ForeColor = System.Drawing.Color.White;

                        this.GridView1.Columns.Add(bf);

 

前台的代码为:

 

<table id ="datalist_table" border ="1" width ="100%" cellpadding ="0">

         <tr >

           <td>

             <div id ="datalist_div" style="overflow:scroll;width:97%; border :1; height :500px">

             <asp:GridView ID="GridView1" runat="server"  AutoGenerateColumns ="false"

                   onrowdatabound="GridView1_RowDataBound" ondatabound="GridView1_DataBound" >

             </asp:GridView>

             </div>

           </td>

         </tr>

       </table>

 

请问各位,你们又是如何处理的呢? 如何能设置列的固定宽度,即使在字段较多时任保持宽度(可左右滑动)。

 

-----------------------------------------------分割线--------------------------------------------------------------

 

问题解决方法如下:

 

1.设置DIV的列宽为固定值而不是百分比(当列多时百分比会被撑开)

 

<div id ="datalist_div" style="overflow:scroll;width:1000px; border :1; height :500px">

 

2.设置GridView的各列宽

 

this.GridView1.Columns[clm_no].ItemStyle.Width = Convert.ToInt32(title_info[6, j]);

 

这段代码写在GridView绑定了某列(GridView1.Columns.Add(XXX))之后。

 

3.GridViewDataBound事件中计算并设置GridView的总宽度:

 

int sumWidth = 0;

for (int i = 0; i < GridView1.Columns.Count;i++ )

{

  sumWidth = sumWidth + Convert.ToInt32(GridView1.Columns[i].ItemStyle.Width.Value);

          

}

this.GridView1.Width = sumWidth;

 

到目前为止水平的滑动条已经可用了。为了让各列能在宽度设置较小情况下自动换行我们加入这段代码:

 

for (int i = 0; i < e.Row.Cells.Count; i++)

{

 e.Row.Cells[i].Style.Add("word-break","break-all");

}

 

当然你也可以在Page_Load或其它需要的地方直接设置GridView.Attribute属性来达到这一效果。这里就不多写了。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多