小弟从卓越网采集数据到数据库中(采集图书目录,很多字那种),数据库对于字段类型是varchar(1000),但是用gridview显示时格式大乱(就是该另起一行的却在同一行显示),根本不像我在卓越看的那样,请问各位大侠怎么解决?

解决方案 »

  1.   

    我这里保存的数据找不到换行符,该换行的地方被好多空格替代,请问怎么在不修改数据库中数据的情况下程序自动检测每遇到3个空格就自动换行?用gridview哦~
      

  2.   

    strText = strText.Replace("\r\n", " ");
      

  3.   

    gridview可以在rowdatabind中对每行么个单元格进行自定义绑定,在这里把从数据库取出来的字符串替换一下就行了
      

  4.   

    还是听不太懂,菜鸟哈我还是上代码吧
         <asp:GridView ID="GridView4" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource4"
                        OnSelectedIndexChanged="GridView4_SelectedIndexChanged" Width="100%">
                        <Columns>
                            <asp:BoundField DataField="Catalogue" SortExpression="Catalogue">
                                <ItemStyle Font-Size="Small" />
                            </asp:BoundField>
                        </Columns>
                    </asp:GridView>
                    <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:Graduation_ProjectConnectionString %>"
                        SelectCommand="SELECT [Catalogue] FROM [Book]WHERE ([Isbn] = @Isbn)">
                        <SelectParameters>
                            <asp:SessionParameter Name="Isbn" SessionField="Isbn" />
                        </SelectParameters>
                    </asp:SqlDataSource>
      

  5.   

    一种:
    strapp=strtemp.Replace("\t\n","");
    strapp=strtemp.Replace("\n", "");
    二种:这种不是根据空格来换行,它是根据自身的宽度来换的。
    style="word-wrap:break-word"
      

  6.   

    strapp是什么意思?大侠解释下,这个语句写在Page_Load里吗?加我q275385228
      

  7.   

    我是完全用aspx里的代码,也就是可视化操作来控制数据显示的,没有用后台cs代码进行读取数据库操作,所以请问怎么通过对aspx的代码实现这个操作?
      

  8.   

    我再描述下问题,就是比如我从数据库中取出的像这样的数据 :aaa  bbbb cccc   
    在绑定到GridView时,我想让此单元格这样显示:  
      aaa   
      bbb   
      ccc   
        
      

  9.   

    這種情況還是有個判斷標準的好,
    你哪些空格是真的空格,你哪些空格是要轉行呢?你在DB中存的都是一樣啊.
    你在存DB的時候就應該將換行符替換掉,如string.Replace("\r\n","[0]").
    然后讀出來的時候你就可以在Gridview_RowDataBind里將[0]再替換成\r\n了
      

  10.   

    截取字符串太长的话用"..."代替.
    给你个我写的方法,适用gridview
     /// <summary>
            /// 数据阶段处理函数
            /// </summary>
            /// <param name="table">需要处理的DataTable</param>
            /// <param name="ColName">需要处理的列名</param>
            /// <param name="lenght">需要保留的长度</param>
            /// <returns></returns>
            public static DataTable InterceptColTable(DataTable table, string ColName, int lenght)
            {
                DataTable myTable = new DataTable();
                myTable = table.Clone();
                DataRow row;
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    row = myTable.NewRow();
                    for (int j = 0; j < table.Columns.Count; j++)
                    {
                        if (table.Columns[j].ColumnName.Equals(ColName))
                        {
                            if (table.Rows[i][j].ToString().Length > lenght)
                            {
                                row[j] = table.Rows[i][j].ToString().Substring(0, lenght - 3) + "...";
                            }
                            else
                            {
                                row[j] = table.Rows[i][j];
                            }
                        }
                        else
                        {
                            row[j] = table.Rows[i][j];
                        }
                    }
                    myTable.Rows.Add(row);
                }
                return myTable;
            }
      

  11.   


           <asp:GridView ID="GridView4" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource4"
                OnSelectedIndexChanged="GridView4_SelectedIndexChanged" Width="100%">
                <Columns>
                    <asp:TemplateField SortExpression="Catalogue">
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Catalogue").ToString().Replace("\n", "<br />"); %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Catalogue").ToString().Replace("\n", "<br />"); %>'></asp:Label>
                        </ItemTemplate>
                        <ItemStyle Font-Size="Small" />
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:Graduation_ProjectConnectionString %>"
                SelectCommand="SELECT [Catalogue] FROM [Book]WHERE ([Isbn] = @Isbn)">
                <SelectParameters>
                    <asp:SessionParameter Name="Isbn" SessionField="Isbn" />
                </SelectParameters>
            </asp:SqlDataSource>也就是给要绑定的字段加上ToString().Replace("\n", "<br />"); 
      

  12.   

    首先设置<asp:BoundField DataField="家庭住址" HeaderText="家庭住址"  ItemStyle-Width="100" />
    gridview里有一列绑定的数据很长,显示的时候在一行里面显示,页面拉得很宽。
    原因是连续英文段为一个整体导致的,在RowDataBound中添加上了一句e.Row.Cells[2].Style.Add("word-break", "break-all")就可以。如果要给所有的列增加此属性:
     protected void Page_Load(object sender, EventArgs e)
        {
            //正常换行
            GridView1.Attributes.Add("style", "word-break:keep-all;word-wrap:normal");
            //下面这行是自动换行
            GridView1.Attributes.Add("style", "word-break:break-all;word-wrap:break-word");
            if (!IsPostBack)
            {
                 bind();//调用数据绑定即可
            }
        }
    总之:善用CSS的word-break:break-all;word-wrap:break-word属性即可,这个属性是通用的对于顽固的南换行问题都可以解决,不局限于GridView。
      

  13.   

    我刚查过了,bind不能这么用,格式不对
      

  14.   

    gridview强制换行
    gv.Attributes.Add("style", "word-break:break-all;word-wrap:break-word");
      

  15.   

                          
           <asp:GridView ID="GridView4" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource4"
                OnSelectedIndexChanged="GridView4_SelectedIndexChanged" Width="100%">
                <Columns>
                    <asp:TemplateField SortExpression="Catalogue">
                        <ItemTemplate><div>
                                <%# Eval("Catalogue").ToString().Replace("\n", "<br />") %>'>
                                </div>
                        </ItemTemplate>
                        <ItemStyle Font-Size="Small" />
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:Graduation_ProjectConnectionString %>"
                SelectCommand="SELECT [Catalogue] FROM [Book]WHERE ([Isbn] = @Isbn)">
                <SelectParameters>
                    <asp:SessionParameter Name="Isbn" SessionField="Isbn" />
                </SelectParameters>
            </asp:SqlDataSource>
     
    呵呵
    刚刚没测试来
      

  16.   

    Protected Sub newLine(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.DataBound
            Dim i As Integer
            Dim j As Integer
            j = GridView1.Rows.Count - 1
            For i = 0 To j
                GridView1.Rows.Item(i).Cells(0).Text = GridView1.Rows.Item(i).Cells(0).Text.Replace("   ", "<br />")
            Next i
        End Sub//Cells(0)為row裡column 0的欄位值