プロが教える店舗&オフィスのセキュリティ対策術

ASP:C#を使ってソースを作っています。
ListViewというSQLを表示するのに便利なタグがあったのでそれを使用しています。
ですが、取得したデータの中身を参照して、参照したデータによって表示を変えたいのですが、
Evalでデータを貼り付けることはできるのですが、stringやintなどの変数に代入出来なさそうです。
ListViewの中で、条件文を挿入することは出来るのでしょうか?

A 回答 (4件)

> データのAの中身をみて、それが0なら、Bを表示、1なら、「削除されました」などのメッセージを表示させる。


> と言ったことを操作したかったのです。

カスタムバインドでコードビハインドのファイルにpublicなメソッド書けばできます。
最初に提示したURLの中でもやってますが。。。
aspxファイルの中だけ、というかコードを記述しない、ということであれば無理です。
    • good
    • 0
この回答へのお礼

返事が遅れてすみません。
コードを記述したら出来ました。
ありがとうございます。

お礼日時:2011/04/11 11:23

> ちなみに、以下のように定義しています。


> <% string text = Eval("Text").ToString(); %>

これはそもそも無理ですね。
ASP.NETが解釈できません。
ちなみに、なぜこのような型変換が必要なんでしょうか?
特にstring型には変換せずともそのまま表示してくれるはずですが。
    • good
    • 0
この回答へのお礼

データのAの中身をみて、それが0なら、Bを表示、1なら、「削除されました」などのメッセージを表示させる。
と言ったことを操作したかったのです。
条件文を入れるためにはint型かstring型に入れないと判定できないので、キャストもしくはメソッドで変換をかけたかったのですが、無理なようですね。

現状は、SQL構文内で判定してテキストを出力させると言ったことで対応しています。
また、取得した文字列の一部文字を変更したいなと言うときにでもEvalでは利用できないですね。
なにか解決策でもありましたら、よろしくお願いします。

解決策が無ければ、これで終わりにしたいと思います。

お礼日時:2011/03/30 14:03

データが取得できているのなら、string型にするのにはToStringメソッドを、int型にするのにはConvert.ToInt32などを使えばよいでしょう。


このあたりはC#の基本書を読むべきかと。

なお、ASP.NETの場合、最終的には文字列になるので、ListViewの内部でint型にする必要があるかどうかはよく考えたほうがいいと思います。
    • good
    • 0
この回答へのお礼

前回キャスト出来ないと書きましたが、
ToStringメソッドでも下記のようなエラーになって、string型に変換できませんでした。

『Eval()、XPath()、および Bind() のようなデータバインド メソッドは、データバインドされたコントロールのコンテキストでのみ使用することができます。』

ちなみに、以下のように定義しています。

<% string text = Eval("Text").ToString(); %>


以下のような使い方だと使えるので、SQLでデータを入れ替えることにします。

<%# Eval("Text") %>

ありがとうございました。

お礼日時:2011/03/29 14:44

http://blogonos.wordpress.com/2006/05/11/%e3%83% …

#う、URLがひどいことに。。。

えと、このページではGridViewでやってますがListViewでも同じようにカスタムバインドを使うことができます。
また、表示の書式を変える程度のことであれば、DataFormatStringを利用すれば解決できると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
カスタムバインドで値を取得しているのですが、そのデータを表示させることは出来るのですが、
string型やint型にキャストするところで、つまずいてしまいます。

今回は、Aのデータを参照してBのデータの出力を変更させるといったものだったので、
とりあえず、SQLのCASE文を利用し、表示させるデータを書き換えることにしました。

お礼日時:2011/03/25 18:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!