- - PR -
【ASP.NET】列に特定文字列が含まれている場合その列を削除するには
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-07 14:13
いつも参考にさせていただいています。
現在、ASP.NETで開発をしております。 データによって列数が変動する表示方法をとっています。 ファイルメーカーから出力されるXMLでカラム数を変化させる 事はできないのでASP側の表示で変化させています。 ************************* 1 2 3 4 5 6 |○|□|□|○| | | |□|△|□|□| | | |○|○|△|○| | | ************************* ↑5と6を下記の方法で削除していました 上記の様にカラムはあるがデータが無い場合に今までは MyGrid.AutoGenerateColumns = true; for (int c = 6; c > 5; c--) { MyGrid.Columns[c].Visible = false;} の様な方法で列数を削除していたのですが http://www.atmarkit.co.jp/fdotnet/dotnettips/092joincells/joincells.html の同一列内のセルを結合を実行すると行あたりの列数が変化してしまい 上記の方法で列を削除すると結合された行は列が1つ少ないとみなされ 表が崩れてしまいます。 そこでファイルメーカーの方で削除したい空欄の部分に特定の文字列を挿入して 特定の文字列がある列は削除という方法がとれないかと思い質問させて頂きました。 ************************* 1 2 3 4 5 6 |○|□|□|○|消|消| |□|△| |□|消|消| |○|○| |○|消|消| ************************* の様に「消」で埋まっている列を削除したいのです。 C#で作っているのですがこの様な方法は可能なのでしょうか? また上記の様な列を結合した場合でも表が崩れない方法が あるのであればお教えしていただきたいと思います。 以上よろしくお願いします。 | ||||||||
|
投稿日時: 2006-11-07 22:43
こんばんは、THREE-ONEです
行を消した後に、セルを結合しても無理でしょうか? "消"が入っているセルを非表示にしてもできると思います。 ヘッダ・フッタがあるならばもう少し工夫が必要かもしれませんが。 | ||||||||
|
投稿日時: 2006-11-08 08:56
回答そのものではないのですが。
このような方法をとるのであれば、ご自身で配列やダミーGridコントロールなりに一旦データを取り込み、そこから有効な列のみをMyGridに出力するといった処理を自作された方が宜しいのではないでしょうか? _________________ R・田中一郎 - R.Tanaka.Ichiro’s Blog | ||||||||
|
投稿日時: 2006-11-08 12:36
セルを削除するのではなく非表示にするとか。 | ||||||||
|
投稿日時: 2006-11-08 15:29
THREE-ONE様
R・田中一郎様 todo様 ご返信ありがとうございます。 >THREE-ONE様 >行を消した後に、セルを結合しても無理でしょうか? と言うのは特定の文字列でセルを削除させる事が可能なのでしょうか? >R・田中一郎様 有効な列のみをMyGridに出力するというのは勉強不足でして ASP内で手書きでカラム名を指定する方法であれば出来るのですが 自動にする方法が可能なのでしょうか? >todo様 >セルを削除するのではなく非表示にするとか。 非表示にしたらセルの枠は表示されないのでしょうか? 前回の説明が分かりにくかったかもしれませんのでもう一度書きますと ************************* |1|2|3|4|5|6| |○|□|□|○|消|消| |□|△| |□|消|消|←3番の列が結合されてる為5列として認識される。 |○|○| |○|消|消| ************************* ↓ ************************* |1|2|3|4| |○|□|□|○| |□|△| |□| |○|○| |○| ************************* の様なスタイルに変えたいのです。 5番と6番の列にはデータが空のカラムになっているか特定の文字列で フラグを立てればいいのかと思ったのです。 色々調べても特定の文字列で列を削除というものが見つからず悩んでいます。 この列の結合の前はそれぞれの行の列数が取得できていたので 6行から5行を列の削除が指定できていたのですが列数が崩れてしまう為 その処理が出来なくなりました。 | ||||||||
|
投稿日時: 2006-11-09 00:50
できますよ、そのようにコードを書けば。 たとえば ItemDataBound イベントでセルの値が削除対象文字列だった場合、Visible = false にするとか。 で、その後にセル結合なので、セル結合は PreRender イベントで行うとか。
これはセル結合、具体的に言うと RowSpan = 2 をどこかで指定した後に消そうとしているからです。 |1|2|3|4|5|6| |○|□|□|○|消|消| |□|△|空|□|消|消| |○|○|空|○|消|消| の状態で5、6を消してから空のセルを結合するということはできないのでしょうか? | ||||||||
|
投稿日時: 2006-11-09 10:41
THREE-ONE様
返信ありがとうございます。 色々試した所、特定の文字列でセルの色を変えるを少しいじって 特定の文字列の入っているセルを削除することが出来ました。 色々とアドバイスをいただきありがとうございました。 |
1