- - PR -
ASP.Net DataGridの文字数制限
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-16 13:45
いつも、お世話になっています。
ASP.NetでDataGridを使ってデータを表示しようと思っています。 その際、表示できる文字数を制限したいのですが、できません。 MaxLengthなどあったらいいのですが、見当たりません。 アドバイスお願いします。 | ||||||||||||
|
投稿日時: 2005-09-16 13:58
BoundColumn.DataFormatString
| ||||||||||||
|
投稿日時: 2006-08-25 13:39
いつもお世話になっております。
Windows XP SP2 Oracle10g Visual Web Developer2005(ASP.NET2.0) にて開発をおこなっております。 同じような内容の質問と思われるため、返信の形で投稿させていただきます。 1文字〜50文字程度の文字が格納されているDBの値をGridViewで表示しております。 この文字を「頭から20文字だけに制限」して表示したいのですが、 『BoundColumn.DataFormatString』 ということですので、GridViewの HtmlEncode = False とセットし、該当のフィールドで DataFormatString = {0:c20} 等と設定してみたのですが、20文字制限されずに表示されてしまいました。 (cは通貨型だから動かないのは当然か・・・) http://msdn2.microsoft.com/ja-JP/library/system.web.ui.webcontrols.boundfield.dataformatstring.aspx http://msdn2.microsoft.com/ja-jp/library/26etazsy.aspx あたりを読むに、数値や日付などは{0:c}{0:d}などの指定は確かにできているのですが、文字列の文字数制御ということになった場合、上記のような単純な指定方法ではできないものなのでしょうか? | ||||||||||||
|
投稿日時: 2006-08-25 13:43
クライアント側(JavaScript)で制御しても出来そうですね。
| ||||||||||||
|
投稿日時: 2006-08-25 13:53
こんにちは。
古い記憶で申し訳ありませんが、以前私が取った方法は DataBinding イベン トでデータをゴニョゴニョしました。 >> ひろれいさん JavaScript だと件数が多くなったときに大変そうです orz _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2006-08-25 14:11
あれっ? 僕のイメージが違うのかな。何せ、VWD2005 は今週から使い始めたところだし、GridView は使ったことないので(^_^;) VS.NET2003 の DataGrid のイメージで考えると、ページ制御しているかな、と。 で、表示は、
ってな感じかな、と。なので、これを、
ってな感じにすればいいのかな、と思ったのですが。 | ||||||||||||
|
投稿日時: 2006-08-25 14:57
ひろれいさん、ぽぴ王子さん、ご返信ありがとうございました。
教えていただいた方法とは別の方法ですが、何とか実現することができました。 ただこの方法がベストとは思えず、 「これでいいのかな?」 と疑問に思っている次第です。 Protected Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.DataBound For Each row As GridViewRow In GridView1.Rows Dim TextValue As String TextValue = GridView1.Rows(row.RowIndex).Cells(6).Text GridView1.Rows(row.RowIndex).Cells(6).Text = Mid(TextValue, 1, 20) Next end sub とやってみることで、頭から20文字のみを表示することができました。 てっきりDataFormatStringを使用して、{0:c2}みたいな感じで設定すれば、日付や貨幣の変換と同様に簡単にできるもんだとばかり思っておりました。 そう簡単にはいかないんですね。(つД`) ただこの方法だと、一度データバインドがすべて完了した後に、1行目から最終行まで見直して再度、変換処理を行っているため、処理的に無駄なところが出ているように思えます。 (ページングを使用して、1ページ10行程度なので、行数的には多くはないのですが) ぽぴ王子さんのおっしゃるDataBindingの方法や、それこそひろれいさんの掲示してくださった方法の方が断然スマートですよね。 そちらの方法でできないものかと、もうちょっと考えてみます。 | ||||||||||||
|
投稿日時: 2006-08-25 17:47
こんにちは。
よく考えたら、特に編集する項目じゃなければ SQL で切っちゃっても良かった 気がしました。
runat="server" と書いている時点ですでにJavaScriptではない希ガス… 僕がイメージしたひろれいさんの方法(JavaScript を使う)は NGO さんが書 かれたような、全部出力した(この場合はクライアントで表示し終わった)あとで JavaScript でループをまわして切る…という感じでした。 それだと件数が多くなったときにループを回すの大変じゃないのかなとか、そも そも出力する必要がない21文字目以降の文字も転送した後で切っちゃうのはも ったいないおばけが出るんじゃないかとか、少し考えてしまったわけで… BGM:北の国から(さだまさし) _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 |