- PR -

GridViewにSQLと関係なくロジックで行追加する方法

1
投稿者投稿内容
とら
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 54
投稿日時: 2007-06-12 09:46
Visual Studio 2005で、ASP.NET Webサイト(C#)の調査をしています。

GridViewに表示するデータをSQLではなく、ロジックで実装するような方法
は、無いのでしょうか?

見たところ、データベースやXMLファイルなどとGridViewを関連付けて
一覧表示を行うことが一般的なようですが、どうもWindowsフォームで
使用するDataGridViewのようにRows.Addで行を追加したりはできないようです。

例えば、データベースから一覧を表示するときに、条件によって、
先頭行に固定で1行追加するとか行いたいようなケースも、全て
SQLで解決するようにしなければ実装できないのでしょうか?

また、別の例で言えば、一覧と詳細のページが存在し、詳細ページで入力した
内容で一覧ページの内容を更新するが、データベースへの反映は、一覧ページで
一括して行いたいなどのケースも考えられます。

そもそも、このようなケースではGridViewを使用するべきでは無いなど、
何か、情報がありましたら、よろしくお願いします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-06-12 10:01
SQLもロジックだし。。。とか言うのは置いておいて、
DataTable 経由でデータをバインドしてはどうでしょう。


_________________
かるあ のメモスニペット
yos
常連さん
会議室デビュー日: 2004/08/24
投稿数: 27
投稿日時: 2007-06-12 11:38
System.Collections.Generic.List(Of T) クラスで
表示/編集したいデータを生成して、
GridView の DataSource に指定してはどうでしょう?
とら
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 54
投稿日時: 2007-06-12 14:54
かるあさん、yosさん。
情報ありがとう御座いました。

とりあえずは、DataTableを使用する方法を検討してみたところ、
ロジックで、GridViewのデータを表示させることができました。

コードは、こんな感じです。

//DataTable定義
DataTable dt = new DataTable();
dt.Columns.Add("項目1", Type.GetType("System.String"));
dt.Columns.Add("項目2", Type.GetType("System.String"));

//DataTableにデータ追加
dt.Rows.Add("01", "0101");
dt.Rows.Add("02", "0202");

//GridViewにバインド
GridView1.DataSource = dt;
GridView1.DataBind();

実は、これに対して、選択機能を追加したいのですが、
dt.Rows.Add("01", "<a href=\"http://www.atmarkit.co.jp/\">eee</a>");
当然ですが、こんな感じにしても効きません。

リンクやボタンなどはGridViewに直接定義を行うのでしょうか?
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-06-12 15:50
GridView をこんな風に定義してみる。
データテーブルに URL用の列(項目3)を追加して
コード:
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
            <Columns>
                <asp:BoundField DataField="項目1" />
                <asp:HyperLinkField DataNavigateUrlFields="項目3" DataTextField="項目2" />
            </Columns>
        </asp:GridView>


_________________
かるあ のメモスニペット
とら
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 54
投稿日時: 2007-06-15 11:23
かるあさんに教えてもらったようにやってみたら、上手くいきました。
ありがとう御座いました。
1

スキルアップ/キャリアアップ(JOB@IT)