如何“精确”控制datagrid当中的列宽度,不会因为绑定的数据不同,而宽度不同?希望进来看。

mutely 2004-10-28 05:18:11
我在一个页面上动态的添加了多个结构相同的datagrid,他们上下罗列,datagrid当中有BoundColumn和模板列,我通过设置“列的”.headerstyle(itemstyle\FooterStyle).width,来指定列的宽度,但是出现一个问题,多个datagrid绑定数据后,由于数据的精确长度不一致,导致,相同的列,在不同的datagrid当中的宽度不是精确的相同(相同的列上下宽度无法对齐),使用了<body style="WORD-BREAK: break-all;">,让长度过长的数据自动换行,

不知道如何设置才能确保不同的datagrid(结构完全相同)列的宽度,精确的,不会因为绑定的数据不同而宽度不同?

其实,我查阅了CSDN近期的帖子,我感觉问题的焦点是当数据是字符串时,字符串的是字母、汉字无规律混合,导致字符串的精确像素长度不一致,使得数据绑定后导致列宽发生偏差,如何解决。
由于CSDN无法贴图,只能文字描述了,大家勿怪。
...全文
162 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fkphp 2004-10-29
  • 打赏
  • 举报
回复
up一下
goody9807 2004-10-29
  • 打赏
  • 举报
回复
Page_load:

DataGrid1.Attributes.Add("style","word-break:keep-all;")


<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<html>
<script runat="server">
int start_index;
ICollection CreateDataSource()
{
DataTable dt = new DataTable();
DataRow dr;

dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));

for (int i = start_index; i < start_index + ItemsGrid.PageSize; i++)
{
dr = dt.NewRow();

dr[0] = i;
dr[1] = "我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文sdfdsfdsfsd我是中文我是中文我是中文";
dr[2] = 1.23 * (i+1);

dt.Rows.Add(dr);
}

DataView dv = new DataView(dt);
return dv;
}

void Page_Load(Object sender, EventArgs e)
{
ItemsGrid.Attributes.Add("style","word-break:keep-all;word-wrap:normal");
if (!IsPostBack)
{
start_index = 0;
ItemsGrid.VirtualItemCount=100;
}
BindGrid();
}

void Grid_Change(Object sender, DataGridPageChangedEventArgs e)
{
ItemsGrid.CurrentPageIndex = e.NewPageIndex;
start_index = ItemsGrid.CurrentPageIndex * ItemsGrid.PageSize;
BindGrid();
}

void BindGrid()
{
ItemsGrid.DataSource=CreateDataSource();
ItemsGrid.DataBind();
}
</script>
<body>
<form runat="server">
<asp:DataGrid id="ItemsGrid" runat="server"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
AllowPaging="true"
AllowCustomPaging="true"
AutoGenerateColumns="false"
OnPageIndexChanged="Grid_Change">

<PagerStyle NextPageText="Forward"
PrevPageText="Back"
Position="Bottom"
PageButtonCount="5"
BackColor="#00aaaa">
</PagerStyle>

<AlternatingItemStyle BackColor="yellow">
</AlternatingItemStyle>

<HeaderStyle BackColor="#00aaaa">
</HeaderStyle>

<Columns>

<asp:BoundColumn HeaderText="Number"
DataField="IntegerValue"/>

<asp:BoundColumn
HeaderText="Item"
DataField="StringValue"/>

<asp:BoundColumn
HeaderText="Price"
DataField="CurrencyValue"
DataFormatString="{0:c}">

<ItemStyle HorizontalAlign="right">
</ItemStyle>

</asp:BoundColumn>

</Columns>

</asp:DataGrid>
</form>

</body>
</html>
mutely 2004-10-29
  • 打赏
  • 举报
回复
如何用脚本调整能,能不能给点思路!脚本我比较弱的
mutely 2004-10-29
  • 打赏
  • 举报
回复
用脚本调整,需要进一步思考,真希望孟子多谈几句,还有没有其他的方法呢?
xiaohutushen 2004-10-28
  • 打赏
  • 举报
回复
Study
minrange 2004-10-28
  • 打赏
  • 举报
回复
提个问题:

如果输入的是一个长单词,如sssssssssssssssssssssssssssssssssss.....

不知道各位怎么解决呢?
噯卟釋手 2004-10-28
  • 打赏
  • 举报
回复
Study
goody9807 2004-10-28
  • 打赏
  • 举报
回复
6.DataGrid如何动态设置列宽,分别包括数据绑定和动态生成列两种情况的列宽设置?

win form:
DataGridTableStyle dgts = new DataGridTableStyle();
dgts.MappingName = "News";
dGridNews.TableStyles.Add(dgts);
DataGridTableStyle tableStyle = dGridNews.TableStyles["News"];
tableStyle.GridColumnStyles[1].Width =300;

web form:
width = 25%


7.DataGrid需要动态帮定不同的列,如何控制他的列宽?

----if(e.Item.ItemType==ListItemType.Header)
for(int i=0,j=e.Item.Cells.Count;i<j;i++){
e.Item.Cells[i].Width=System.Web.UI.WebControls.Unit.Pixel(20);
}

--- DataGrid1.Columns(9).HeaderStyle.Width = Unit.Pixel(100)

cyokin 2004-10-28
  • 打赏
  • 举报
回复
你可以在客户端用js进行动态调整
看来只有这个方法咯
孟子E章 2004-10-28
  • 打赏
  • 举报
回复
你可以在客户端用js进行动态调整
minrange 2004-10-28
  • 打赏
  • 举报
回复
破点冷水,网页做不到吧

希望有人能给出答案,学习学习

62,244

社区成员

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

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

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

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