使字符串移动到GridView的下一行

时间:2016-08-04 15:44:25

标签: c# asp.net gridview

我有一个GridView,在其中一个列中显示了一个名称列表。 这个列表可能会变长,因此会导致GridView变得很长并且会切断名称。然后我必须到网格的底部滚动。

enter image description here

有没有办法让网格中断,所以在5个名字之后会让名字进入下一行?这一行来自一些SQL代码,它将所有名称串联成一个字符串:

(SELECT CAST(group_concat(CONCAT(cc.username)separator ',') AS CHAR(200)) FROM message

GridView代码:

public static GridView BuildUserChatsGrid()
        {
            GridView NewDg = new GridView();

            NewDg.DataKeyNames = new string[] { "ID" };
            NewDg.AutoGenerateColumns = false;
            NewDg.CssClass = "tblResults draggable";
            NewDg.HeaderStyle.CssClass = "tblResultsHeader";
            NewDg.AlternatingRowStyle.CssClass = "ResultsStyleAlt";
            NewDg.RowStyle.CssClass = "ResultsStyle";
            NewDg.RowDataBound += ChatsGridDataBound;

            NewDg.Columns.Add(new BoundField { DataField = "SentDate", HeaderText = "Date/Time" });
            NewDg.Columns.Add(new BoundField { DataField = "MembersIncluded", HeaderText = "Members Included" });

            NewDg.Width = Unit.Percentage(100.00);

            return NewDg;
        }

2 个答案:

答案 0 :(得分:1)

修复列宽会强制文本换行。您可以设置ItemStyle.Width的值,以像素为单位:

new BoundField { DataField = "FieldName", ItemStyle = { Width = Unit.Pixel(200) } }

或百分比:

new BoundField { DataField = "FieldName", ItemStyle = { Width = Unit.Percentage(40) } }

或另一个可用单位。

请注意,只有文本中有空格时才会进行文本换行。您必须在SELECT查询的字符串连接中使用', '而不是','

答案 1 :(得分:0)

添加ItemStyle.Wrap设置,如下所示:

new BoundField {DataField="FieldName", ItemStyle = {Width = Unit.Pixel(200), Wrap = true}};

更新:正如@ConnorsFan建议的那样,Wrap = true将无效。但是,我建议尝试为BoundField指定CssStyle并定义" max-width:200px;"那种风​​格。