GridView表头列宽拉伸问题。

z22708387 2014-10-29 04:08:56
最近在研究asp.net中GridView方面的东西。
现在遇到一个比较麻烦的设计。

需求:
1、表头宽度初始值固定。
2、表头宽度可以拉伸。


在表头宽度初始值不设定的情况下,也就是上述条件 1 不存在的情况下,实现了表头宽度拉伸。
代码如下:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
if (true)//如果允许改变列宽
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
e.Row.Cells[i].Attributes.Add("onmousemove", "SyDG_moveOnTd(this)");
e.Row.Cells[i].Attributes.Add("onmousedown", "SyDG_downOnTd(this)");
e.Row.Cells[i].Attributes.Add("onmouseup", "this.mouseDown=false");
e.Row.Cells[i].Attributes.Add("onmouseout", "this.mouseDown=false");
}
}
}
}


<script language="javascript" type="text/javascript">
//设置Datagrid列宽可以被拖动的函数
function SyDG_moveOnTd(td) {
if (event.offsetX > td.offsetWidth - 10)
td.style.cursor = 'w-resize';
else
td.style.cursor = 'default';
if (td.mouseDown != null && td.mouseDown == true) {
if (td.oldWidth + (event.x - td.oldX) > 0)
td.width = td.oldWidth + (event.x - td.oldX);
td.style.width = td.width;
td.style.cursor = 'w-resize';

table = td;
while (table.tagName != 'TABLE') table = table.parentElement;
table.width = td.tableWidth + (td.offsetWidth - td.oldWidth); table.style.width = table.width;
}
}
function SyDG_downOnTd(td) {
if (event.offsetX > td.offsetWidth - 10) {
td.mouseDown = true;
td.oldX = event.x;
td.oldWidth = td.offsetWidth;
table = td; while (table.tagName != 'TABLE') table = table.parentElement;
td.tableWidth = table.offsetWidth;
}
}
</script>


但是只要进行了 上述条件 1 设定以后,该方法无效。
不知道有没有人做过类似的东西。
求大神解决同时满足上述条件两个都满足的代码。
...全文
341 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
eew_1679694743 2014-11-04
  • 打赏
  • 举报
回复
创建表头固定、表体滚动的GridView控件示例 //java控制代码 <script type="text/javascript"> function s() { var t = document.getElementById("<%=GridView1.ClientID%>"); var t2 = t.cloneNode(true) for(i = t2.rows.length -1;i > 0;i--) t2.deleteRow(i) t.deleteRow(0) a.appendChild(t2) }//codego.net/tags/15/1/ window.onload = s </script> //GridView设置 <asp:GridView ID="GridView1" runat="server" Font-Size="12px" GridLines="None" CellPadding="4" Width="560px" ForeColor="#333333"> <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> <RowStyle BackColor="#E3EAEB" /> <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> <HeaderStyle BackColor="#EDEDED" Height="26px" /> <EditRowStyle BackColor="#7C6F57" /> <AlternatingRowStyle BackColor="White" /> </asp:GridView> //绑定数据显示 ICollection CreateDataSource() { System.Data.DataTable dt = new System.Data.DataTable(); System.Data.DataRow dr; dt.Columns.Add(new System.Data.DataColumn("学员班级", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("学员姓名", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("历史", typeof(System.Decimal))); dt.Columns.Add(new System.Data.DataColumn("政治", typeof(System.Decimal))); dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal))); dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal))); for (int i = 0; i < 50; i++) { System.Random rd = new System.Random(Environment.TickCount * i); ; dr = dt.NewRow(); dr[0] = "班级" + i.ToString(); dr[1] = "【缤纷科技】" + i.ToString(); dr[2] = System.Math.Round(rd.NextDouble() * 100, 2); dr[3] = System.Math.Round(rd.NextDouble() * 100, 2); dr[4] = System.Math.Round(rd.NextDouble() * 100, 2); dr[5] = System.Math.Round(rd.NextDouble() * 100, 2); dt.Rows.Add(dr); } System.Data.DataView dv = new System.Data.DataView(dt); return dv; }
KeepSayingNo 2014-11-04
  • 打赏
  • 举报
回复
z22708387 2014-11-04
  • 打赏
  • 举报
回复
引用 4 楼 dotnetstudio 的回复:
换个控件吧,用jqGrid,不仅可以拉伸,还可以每列进行排序
求连接。
z22708387 2014-11-03
  • 打赏
  • 举报
回复
没有人会????
KeepSayingNo 2014-11-03
  • 打赏
  • 举报
回复
换个控件吧,用jqGrid,不仅可以拉伸,还可以每列进行排序
z22708387 2014-10-30
  • 打赏
  • 举报
回复
引用 1 楼 a124699279 的回复:
太简单了 在 属性里设置 就好了
Asp.net中的GridView 没有这样的属性。谢谢。
a124699279 2014-10-29
  • 打赏
  • 举报
回复
太简单了 在 属性里设置 就好了

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧