我现在是这样做的:
数据库中取出满足条件的数据集到一个dataset的datatable中,然后再对要固定长度的列进行判断,如果长度大于设定的宽度,则用substring函数截取,然后把截取的结果生成一个新列,用于显示。我写了一个专门的函数,如下,你看看对你有没有帮助:
//处理标题过长的标题,用………表示。
//参数dt_source表要修改的源表,str_title_column_name表作为标题的字段名,str_temp_title表去掉多余字符的字段名称,
//int_title_length表要显示的字符的长度。返回为一个datatable,它增加了一个名为str_temp_title的字段。
public void long_title(ref DataTable dt_source,string str_title_column_name,string str_temp_title_column_name,int int_title_lengh)
{
dt_source.Columns.Add(str_temp_title_column_name,System.Type.GetType("System.String"));
for(int i=0;i<=dt_source.Rows.Count-1;i++)
{
if (dt_source.Rows[i][str_title_column_name].ToString().Length>int_title_lengh+1)
{
dt_source.Rows[i][str_temp_title_column_name]=dt_source.Rows[i][str_title_column_name].ToString().Substring(0,int_title_lengh+1) + "……";
}
else
{ dt_source.Rows[i][str_temp_title_column_name]=dt_source.Rows[i][str_title_column_name];
}
}
}
数据库中取出满足条件的数据集到一个dataset的datatable中,然后再对要固定长度的列进行判断,如果长度大于设定的宽度,则用substring函数截取,然后把截取的结果生成一个新列,用于显示。我写了一个专门的函数,如下,你看看对你有没有帮助:
//处理标题过长的标题,用………表示。
//参数dt_source表要修改的源表,str_title_column_name表作为标题的字段名,str_temp_title表去掉多余字符的字段名称,
//int_title_length表要显示的字符的长度。返回为一个datatable,它增加了一个名为str_temp_title的字段。
public void long_title(ref DataTable dt_source,string str_title_column_name,string str_temp_title_column_name,int int_title_lengh)
{
dt_source.Columns.Add(str_temp_title_column_name,System.Type.GetType("System.String"));
for(int i=0;i<=dt_source.Rows.Count-1;i++)
{
if (dt_source.Rows[i][str_title_column_name].ToString().Length>int_title_lengh+1)
{
dt_source.Rows[i][str_temp_title_column_name]=dt_source.Rows[i][str_title_column_name].ToString().Substring(0,int_title_lengh+1) + "……";
}
else
{ dt_source.Rows[i][str_temp_title_column_name]=dt_source.Rows[i][str_title_column_name];
}
}
}
解决方案 »
- asp.net控件无法响应后台事件
- 求VS03下能将datagrid变为可变的TABLE形式的代码.给者有分!
- 表示层和设计模式,请大家解答
- 每天数据库的点击率自动加100,怎么实现?
- DataGrid导入Word中网格怎么去不掉呢???30分请教!!
- 大家帮我看看这是什么错?怎么改?
- asp.net 下向用户发手机信息的解决方案,
- 怎么样儿获取服务器的时间???我在代码中直接用DATETIME。NOW获得是本地机的时间,我刚才试过了!!
- datagrid 中如何用鼠标自动调节列宽
- 如不容易整了一VS。NET,导入里有OFFICE WEB COMPOENT 9.0,增FUNCTION,WIZARD,导哪一个
- 关于DownDropList数据绑定的问题[菜鸟求救!]
- 大家帮忙,看看啦
ToolTip='<%# DataBinder.Eval(Container.DataItem,"vc_file_title") %>'
我用的不是datagrid,用的是datalist的itemtemplate,在模板里用了linkbutton控件。
如果纪录条数不多,性能上没什么影响。多了就有点慢,但也只有这种方法。我没找到其他的方法。
<asp:datalist id="dl_file" runat="server" RepeatDirection="Vertical" RepeatColumns="1">
<ItemTemplate>
<p>
<img src="img/foldernew.gif" />
<asp:LinkButton ID="lbn_file_name" Runat="server" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"n_file_pk") %>' ToolTip='<%# DataBinder.Eval(Container.DataItem,"vc_file_title") %>'>
<%# DataBinder.Eval(Container.DataItem,"temp_title")%>
</asp:LinkButton>
</p>
</ItemTemplate>
</asp:datalist>
datagrid中也这样做。
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs) Handles DataGrid1.ItemDataBound If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
CalcTotal(e.Item.Cells(4).Text)
e.Item.Cells(4).Text = String.Format("{0:c}", Convert.ToDouble(e.Item.Cells(4).Text))
e.Item.Cells(1).Text = Left(e.Item.Cells(2).Text, 4) + "..."
e.Item.Cells(1).Attributes.Add("title", e.Item.Cells(2).Text)
ElseIf e.Item.ItemType = ListItemType.Footer Then
e.Item.Cells(0).Text = "Total"
e.Item.Cells(4).Text = String.Format("{0:c}", runningTotal)
End If
End Sub