web-dev-qa-db-ja.com

Gridviewの境界フィールドでテキストを折り返す方法は?

私はテーブルを持っています、テーブルにはいくつかのボタンとグリッドビューがあります。グリッドビューのboundfieldの1つでテキストを折り返そうとしています。

GridviewプロパティにRowStyleWrap="true"を設定し、boundfieldプロパティにItemStyleWrap="true"Widthを設定しようとしましたが、しませんでした動作しません。

以下は私のaspxです。

<table align="center" border="0" cellpadding="0" cellspacing="2" >
    <tr>
        <td></td>
        <td align="right">
            <asp:Button ID="btnAdd" runat="server" Text="Add Subscription" 
                onclick="btnAdd_Click" CausesValidation="False" />
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <p align="center" style="font-family: Arial, Helvetica, sans-serif; font-size: 14px" >
                <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
            </p>
        </td>
    </tr>
    <tr>
        <td align="left" colspan="2">
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataKeyNames="SubscriptionID,UserID" 
                DataSourceID="SqlDSEmailSubscriptions" Width="90%" CellPadding="4" 
                EnableViewState="False" AllowPaging="True">
                <Columns>
                    <asp:TemplateField HeaderText="SubscriptionName" SortExpression="SubscriptionName">
                    <ItemTemplate>
                        <asp:LinkButton ID="lbtnSubscription" runat="server" CausesValidation="false" 
                        Text='<%# Eval("SubscriptionName")%>' OnClick="lbtnSubscription_Click">
                        </asp:LinkButton>
                    </ItemTemplate>
                    </asp:TemplateField> 

                    <asp:BoundField DataField="SubscriptionName" HeaderText="SubscriptionName" 
                        SortExpression="SubscriptionName" Visible="false" />

                    <asp:BoundField DataField="SubscriptionID" HeaderText="SubscriptionID" 
                        ReadOnly="True" SortExpression="SubscriptionID" />
                    <asp:BoundField DataField="ProductList" HeaderText="ProductList" 
                        SortExpression="ProductList" />
                    <asp:BoundField DataField="DivisionList" HeaderText="DivisionList" 
                        SortExpression="DivisionList" />
                    <asp:BoundField DataField="DisciplineList" HeaderText="DisciplineList" 
                        SortExpression="DisciplineList" />
                    <asp:BoundField DataField="UserID" HeaderText="UserID" ReadOnly="True" 
                        SortExpression="UserID" Visible="false" />
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDSEmailSubscriptions" runat="server" 
                ConnectionString="<%$ ConnectionStrings:SPRConnectionString %>" 

                SelectCommand="SELECT [SubscriptionID], [SubscriptionName], [ProductList], [DivisionList], [DisciplineList], [UserID] FROM [sprEmailSubscriptions] WHERE ([UserID] = @UserID) ORDER BY [SubscriptionName]">
                <SelectParameters>
                    <asp:SessionParameter Name="UserID" SessionField="userID" Type="Int32" />
                </SelectParameters>
            </asp:SqlDataSource>
        </td>
    </tr>
</table>
6
GLP

固定長のグリッドビュー列でテキストを折り返します。

まず、グリッドビューで列を作成します。ここで、テキストはItemTemplateとして折り返されます。

これは次の方法で実行できます。

  • グリッドビューを選択—スマートタグ>列の編集
  • 左下のボックスからSelectedfieldsというタイトルの列を選択します
  • 「このフィールドをTemplateFieldに変換する」をクリックします> OK

ソースでは、次のコードが表示されます。

_<asp:TemplateField HeaderText="name" SortExpression="name">
    <EditItemTemplate>
       <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name")%>'></asp:TextBox>
    </EditItemTemplate>

    <ItemTemplate>
       <asp:Label ID="Label1" runat="server" Text='<%# Bind("name") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>
_

次のように、列の幅制限をピクセル単位で指定します。

_<ItemTemplate>
  <asp:Label ID="Label1" runat="server" Text='<%# Bind("name") %>' Width="200px"></asp:Label>
</ItemTemplate>
_

次に、スタイルを追加します。

列内のテキストの折り返しをすべての列またはグリッドビュー全体に適用する場合は、page_load()イベントに次のコードを記述します。

_protected void Page_Load(object sender, EventArgs e)
{
    GridView1.Attributes.Add("style", "Word-break:break-all; Word-wrap:break-Word");    
}
_

列内のテキストの折り返しをグリッドビューの特定の列にのみ適用する場合は、GridView1_RowDataBound()イベントに次のコードを記述します。

_protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Cells[0].Attributes.Add("style", "Word-break:break-all;Word-wrap:break-Word;");
    }
}
_

グリッドビューのセル番号を確認してください。

作業完了!

10
suyog

アイテムテンプレートでのDivの使用はGr8で機能します

 <ItemTemplate>
                            <div style="Word-wrap: break-Word; width: 530px;>
                                <asp:Label ID="lblTermName" runat="server" Text='<%# Eval("TermName") %>' />
                            </div>
                        </ItemTemplate>
3
KiranSolkar

はい、すべての「x」文字で解析できますが、列のヘッダーに固定サイズで配置し、ラップ「true」を定義する方が良い解決策かもしれません。

このオプションを使用すると、毎回同じグリッドビューサイズが得られ、ユーザーインターフェイスがより明確になります。

使用コード:

<asp:BoundField DataField:="Your_data_field" HeaderText="Your_text" sordExpression="Your_sort_expression" ItemStyle-wrap="true" ItemStyle-with="50" />
1
SeniB