2009-05-28 14 views
0

Gridviews ItemTemplateで100文字しか表示しません。 editボタンをクリックすると、すべてのバインドされた値をEditItemTemplateで表示したいと思います。ラベルItemTemplate内のGridview

<ItemTemplate> 

<asp:Label ID="Label2" runat="server" Text='<%# Bind("Address") %>'> </asp:Label> 

</ItemTemplate> 

ラベルテキストを100文字に制限するにはどうすればよいですか?

答えて

2

ItemTemplateで作業しているので、実際にBind()を使用する必要はありません。あなたは代わりに)評価を(使用してのようなものを作ることができます。

アドレスフィールドがnullのときに最初は、あなたがのチェックを行う必要があります。このような単純な解決策には二つの問題があります

<%# Eval("Address").ToString().Substring(0, 100) %> 

それ。もう1つは、文字列が100文字よりも短い場合、.NETのSubstring()は常に100文字を正確に取得しようとし、文字列が短い場合は例外をスローするため、文字列も100文字よりも短い場合です。だからあなたは本当に文字列をカットする必要があることを確認するコードを追加する必要があります。

そしておそらく、我々は代わりに小さなヘルパーメソッドを作成する必要がありますように、今ではそれが感じている:

public static class Extensions 
{ 
    public static String Limit(this String s, int length) 
    { 
     if (s == null) 
      return String.Empty; 

     return s.Substring(0, Math.Min(s.Length, length)); 
    } 
} 

そして、評価文は次のようになります。(これはアドレスが本当にAであることを前提としてい

<%# ((string)Eval("Address")).Limit(100) %> 

文字列)

+0

エラー:エラー 'object'に 'SubString'の定義が含まれず、拡張メソッド 'SubString'が受け入れられません'object'型の最初の引数が見つかる可能性があります(usingディレクティブまたはアセンブリ参照がありませんか?) – Jack

+0

Evalが返すものがわかりません。 .ToString()を作成してください。代わりに部分文字列(0、100)を使用してください。そして、はい、ストリングに大文字のSはなく、ちょうどタイプミスです。 – Ostemar

+0

"Evalメソッドはデータフィールドの名前を取り、データソースの現在のレコードからそのフィールドの値を含む文字列を返します。 - http://msdn.microsoft.com/en-us/library/ms178366.aspxから。そうすればうまくいくはずです。たぶんあなたの問題を引き起こしたのはたったのタイプミスでした。 – Ostemar

関連する問題