• 締切済み

GridViewに行追加するには?

ObjectDataSourceをGridViewにバインドしてGridViewを表示しています。GridViewは1画面に20行固定で表示したいのですが、表示するデータが20行に満たない場合でも空白行を追加して、20行表示にしたい。空白行を追加するにはどうすればよろしいでしょうか? GridView1.Controls[0].Controls.AddAt(INDEX,GridViewRow)で追加できそうなのですが、GridViewRowの作成方法がわかりません。 よろしくおねがいします。

みんなの回答

回答No.2

お世話になります。 > やり方としてはオブジェクトをArray等に入れて という事を想定していたのですが、 ObjectDataSource の 型になにを選択しているかによって できないかもしれないですね。すみません。 TableAdapter 等を ObjectDataSource の 型 として使用している場合、Fill 等のメソッドをラップするメソッドを 作ってやり、 20 行判定及び 20 行に満たない場合は空行オブジェクト追加 等はいかがでしょうか。

shitochin
質問者

補足

お世話になっております。 Fillメソッドのラップは考えつきませんでした。試してみます。 とりあえず下記の方法で成功しました。 下記を20行になるまでループさせました。 GridViewRow row1 = new GridViewRow(-1, -1, DataControlRowType.DataRow, DataControlRowState.Normal); TableCell cell1 = new TableCell(); TableCell cell2 = new TableCell(); TableCell cell3 = new TableCell(); TableCell cell4 = new TableCell(); TableCell cell5 = new TableCell(); cell1.Text = " "; cell2.Text = " "; cell3.Text = " "; cell4.Text = " "; cell5.Text = " "; row1.Cells.Add(cell1); row1.Cells.Add(cell2); row1.Cells.Add(cell3); row1.Cells.Add(cell4); row1.Cells.Add(cell5); GridView1.Controls[0].Controls.AddAt(j+1, row1);

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

お世話になります。 ObjectDataSource が 20 個に満たない場合は ObjectDataSource に空のオブジェクトを追加してやって 20 個表示するようにするのはだめなんでしょうか。

shitochin
質問者

補足

回答ありがとうございます。 やり方としてはオブジェクトをArray等に入れて Arrayに空のオブジェクトを追加して、 ArrayをGridViewにDataBindするという方法でよろしいでしょうか。 で、バインドした時にGridViewを再表示して、 一瞬ちらついたりしないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ASP.NET GridView につきまして

    ASP.NET GridView につきまして質問があります。 よろしくお願いいたします。 SQL Server にあるデータを使用して、GridView を作成しております。 あるBit型フィールドがあるのですが、NULLの場合は 無、1の場合には 有 と GridView内に表示させたいのですが、GridViewの項目はバインドされているフィールドしか表示させることができないのでしょうか? 非連結の項目を追加して どこかのプロパティに =IIf([CheckChoku]=True,"有","無") を記述すれば、表示できるような方法を探しています。 すみません ASP.Net は始めたばかりなので、VB や Access のような操作が応用できればなと思っております。もしくは SQL のデータソースを作成するときに上記を埋め込んでソースにしないと実現できないものでしょうか? ご教授いただければ 大変助かります。 よろしくお願いいたします。

  • DataGridViewでの追加行の表示について

    VB2005で作成。 DataGridViewを非バインドで作成しました。 追加行のプロパティもtrueにしています。 通常そのまま作成すると新規行が1行だけ空白表示で その下はグレーで何もない状態です。 画面いっぱい(グリッドの画面)にグリッドの行の枠を 表示してほしいとの要望がありました。 つまりデフォルトでグリッドの画面いっぱいにexcel表示のように グリッドの枠を表示してどこからでも入力できるほうが良い ということを言われました。 それが設定か何かをするだけで、簡単できると 思っているので調べてますが、方法が まったく見つからない状態で困っています。 わたしは無理なんじゃないの?と思ってます。 考えているのは、 ・自分である程度の行を最初に無理やり追加して  その行数でイベント(削除、追加、データ保存時など)で  コントロールする。手間がかかりますが仕方ない。 ・設定するプロパティがある(ぜひご教授ください) ・他に回避策がある。(ぜひご教授ください) ・有料のツールにあれば買う。(今あるもので済ませたいので避けたい) 何か良い方法がないでしょうか?よろしくお願いします。

  • gridViewの行選択解除

    gridViewの行選択解除 windowsのvb.netでgridviewを使用しております。 ページを読み込んだ際にgridViewにデータを表示するのですが gridViewの先頭行が選択状態のまま表示されてしまいます。 未選択状態にすることは可能なのでしょうか? お分かりになる方がいらしゃいましたらよろしくお願い致します。

  • GridViewにバインドせずにデータを表示する方法

    環境:VS2008&VB.NET&ASP GridViewに手動でテーブルからデータを読みデータバインドせず DBの値を表示する方法を考えていますがうまくいかず困っています。 (データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。) 初心者のため見当違いなことをしているかもしれませんが それも含めまして質問させていただきます。 質問1 そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。 質問2 以下のコードで試しましたが「GridView1.Controls(0).Controls.Add(row1)」でExeptionが発生してしまいました。 手順に不適格な箇所があるのでしょうか。 strSql = "SELECT * FROM Data_Table" Using connection As New SqlClient.SqlConnection(cnStr) Dim command As New SqlClient.SqlCommand(strSql, connection) connection.Open() Dim dr As SqlClient.SqlDataReader = command.ExecuteReader While (dr.Read = True) 'データあり str1 = dr("data1") str2 = dr("data2") str3 = dr("data3") End If connection.Close() Dim item1 As DataGridItem item1 = New DataGridItem(-1, -1, ListItemType.Item) Dim cell0 As TableCell = New TableCell item1.Cells.Add(cell0) Dim cell1 As TableCell = New TableCell item1.Cells.Add(cell1) Dim cell2 As TableCell = New TableCell item1.Cells.Add(cell2) Dim row1 As New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal) row1.Cells.Add(cell0) row1.Cells.Add(cell1) row1.Cells.Add(cell2) GridView1.Controls(0).Controls.Add(row1) End While End Using エラーの内容 System.ArgumentOutOfRangeException はユーザー コードによってハンドルされませんでした。 Message="指定された引数は、有効な値の範囲内にありません。 パラメータ名: index" お力添えをよろしくお願い致します。

  • GridViewを自動的にスクロールするには

    Aクライアントはデータをサーバーに送信し、サーバーは蓄積します。 Bクライアントはサーバーに蓄積されたデータに変化があれば, その都度GridViewで常時表示しています。 GridViewには新しいデータを下の行に、古いデータを上の行にという順序で表示しています。 GridViewにはスクローバーを付けています。 GridViewではいつも最新のデータを表示させたいので、いつも最下行を表示させるようにしたい。 つまり、新しい情報を1行表示させるたびに、1行スクロールアップさせたいのですが、スクロールの方法がわかりません。 言語はJavaScriptを使用しています。よろしくお願いします。

  • ASP.Net GridView DataBind

    お世話になります。 FormView の中に いくつかのコントロールと ボタンとGridView を配置しております。 ボタンを押すと、GridView のレコードが追加するような UpDate文を実行するようになっています。 GridViewのデータも一緒に新しいデータとともに表示を更新させたいと思うのですが、 GridView の DataBindメソッドをどうやって呼び出していいかわかりません。 名前は GridView1 なのですが、Button1_Click メソッドの中で、GridView1 の候補が出ないですし、 どうやって定義して、実行すればいいのかわかりません。 何卒よろしくお願い申し上げます。

  • GridViewの行選択イベントを発生させるには?

    visual studio 2010でwebアプリケーションを作成しています。 GridViewの行をクリックしたことをjavascriptで認識したいので行の一番左のセルにチェックボックスを張り付けることにより実現できたのですが、チェックボックスとかボタンとかを張り付けないで行のどのセルをクリックしてもイベントを発生させるにはどのようにすればよろしいでしょうか? コントロールを張り付けたくないのは、1行に表示できる文字の領域がせまくなってしまうためです。

  • ASP.NET GridView の二列表示

    ASP.NET GridView につきまして質問があります。 よろしくお願いいたします。 SQL Server にあるデータを使用して、GridView を作成しております。 普通にGridViewを作成すると すべて横一列で表示されてしまいます。 例えば項目列が沢山あると、画面を横スクロールしなくてはすべてが見えなくなってしまいます。 なるべく1画面ですべてを見渡せるようにしたいのですが、そのためには GridView での1データを2列表示にできればよいのではないかと思うのですが、 2列表示にできるのでしょうか? ご教授いただければ 大変助かります。 よろしくお願いいたします。

  • GridViewの行をダブルクリック

    GridViewで行をダブルクリックした時、その行の詳細画面を別ウインドウで表示したいのですが どのようにすればよいですか? web開発初心者なのでjavascriptもわからず苦戦しています。 できればコーディング例があればうれしいです。 ご教授お願いします。

  • GridViewの行の入れ替えについて

    VS2005 ASP.NET GridViewの列を動的に並び替える方法をさがしています. 具体的にはpage_load関数内で 別のファイルやユーザの設定した コントロールの値などから 表示する列を並びを入れ替えたいと思っています. 列のたいとるや数は変わりません。 お力添えをお願いいたします