初回表示時の処理キャンセル

このQ&Aのポイント
  • 初回表示時の処理をキャンセルする方法を知りたい
  • DropDownListの値を設定するだけでGridViewの表示をせずに、ボタンを押した時に検索と表示を実行したい
  • Load時にIsPostBackを調べてDataSourceの処理を制御する方法を教えてほしい
回答を見る
  • ベストアンサー

初回表示時の処理キャンセル

現在、Visual Web Developer 2008 Express Edition .NET Framework3.5にて勉強中です。 データベースから取得したデータを表示するために、 default.aspxページ内に、 ・DropDownList ・DataSource1(DropDownList用のデータ取得) ・GridView ・DataSource2(GridView用のデータ取得) ・Button を配置しています。 DropDownListにて検索条件を設定し、Buttonにて検索実行 DataSource2の検索条件に、DropDownListの値をパラメータとして渡して GridViewにて表示としています。 この状態でページを表示した際に、初回は検索条件が設定されていないので 全レコードがGridViewに表示されてしまいます。 希望する動作としては、初回表示の場合はDropDownListの値を設定するのみで GridViewの表示(DataSource2のSelect文の実行)をしないで、Buttonを 押したときのみ、検索→表示を実行したいのですが、どうすればよろしいのでしょうか? ページのLoad時にIsPostBackを調べて何かするのかな?と思っているのですが、 DataSourceの処理を制御する方法が分かりません。 (制御できるのかどうかも分かりません。) どなたか、ご教示お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • onos
  • ベストアンサー率81% (127/155)
回答No.1

aspxファイル中のGridViewの定義のなかに  DataSource="DataSource2" という箇所があるんじゃないかと思います。 まずこの部分を削除してください。 削除することで自動でDataSource経由でデータを取り出す処理をしなくなります。 その後、Buttonを押したときの処理に  GridView.DataSource="DataSource2"  GridView.DataBind() という記述を加えてください。 この記述によって、GridViewとDataSource2が関連づけられた状態でデータ取得の作業が行われます。 きちんとソースを確認しないで手書きで書いているので間違った記述があるかもしれませんので適宜修正してください。

zagreus
質問者

お礼

ありがとうございます。 希望通りになりました。 GridView.DataSourceID="DataSource2"

関連するQ&A

  • ASP.NET GridView の検索画面でのページング操作処理について

    ASP.NET・WindowsXP・ACCESS2003DB・ 2005ExpressEdition 検索画面を作成しましたがうまく動作しません教えてください。 1.条件入力用のテキストボックス幾つか作成。 2.検索ボタンを作成。 3.GridViewに上記の条件でSqlDatasourceより   データを表示できました。 4.1ページの件数10件を遥かにが多いため   GridView下段にページ番号が表示される 5.ページ番号をクリックすると、全データが表示   される。 条件入力した値でのSQL文のルーチンを通っていない 為と思われるが、GridView下段にページ番号を クリックしたときのイベントに条件ルーチンを 挿入したいのですが教えて頂けますでしょうか よろしくお願いいたします。

  • ASP.Net DropDownList 不明値

    大変お世話になります。 ASP.Net 初心者でございます。 データソースのある GridView の1つの項目が DropDownList になっております。 このDropDownList のデータの元になるテーブルがあるのですが、 運営上の問題で一部のデータを消す事があります。 そうなると、本データ上にはある過去の値が、現在の DropDownList のデータには無い事があるのです。そういうデータを GridView で表示すると、次のような・・・ 【項目一覧に存在しないため、'DropDownList1' に SelectedValue を指定することは無効です】 というエラーになってしまうのですが、何か良い方法はないでしょうか? DropDownList のデータ 1:青森 2:山形 3:岩手 4:NewYork ・・・・・ このデータは既にDropDownList のテーブル上にはありません。 本データの DropDownList 項目のデータ 1:青森 2:山形 3:岩手 -------------------------------------------------- 4:NewYork ・・・・・ このデータが出てくるとエラーになります。(このデータは本データにある) -------------------------------------------------- こういう場合は、本データにあって、DropDownList データには無いデータをあらかじめ取得して、 AppendDataBoundItems か何かで、追加する必要があるのでしょうか? 何卒よろしくお願いいたします。

  • ASP.Net GridView DataBind

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

  • GridViewのEditTemplate

    すみません。改めて質問させていただきます。 GridViewのEditTemplateにDropDownListが配置されています。 更新したときに、そのDropDownListの値を取得する方法をご教授頂きたいです。 言語はVBです。以下のコードを書きましたが取得できません(Updatingイベントのとき)↓ Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating MsgBox(GridView1.Rows(e.RowIndex).ToString) End Sub とりあえずメッセージボックスにドロップダウンリストの値を表示したいです。

  • DropDownList に指定した値を表示したい

    <開発環境>asp.net A画面のgridviewで指定されたkeyの詳細情報をB画面のgridviewで表示しています。 B画面ではgridviewのTemplateFieldにDropDownListを作成しています。 DropDownListはSqlDataSourceをバインドさせているのですが、A画面でデータを選択し 修正ボタンを押下した時にB画面のDropDownListに初期表示する方法がわかりません。 どのようにすれば表示できるのでしょうか? ちなみにA画面でKBNNAMEが"愛知県"だとB画面で"愛知県"と表示したいです。 -------------------------------------------------------------------------------- <asp:GridView ID="grdList" CssClass="list" runat="server" AutoGenerateColumns="False" DataSourceID="sqldsList"> <Columns> <ItemTemplate> <asp:DropDownList CssClass="cnbstr" ID="cnbBB_KBN" runat="server" DataSourceID="sqldscnb1" DataTextField="KBNNAME" DataValueField="KBNORDER" AutoPostBack="True"></asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> -------------------------------------------------------------------------------- <asp:SqlDataSource ID="sqldscnb1" runat="server" ConnectionString="<%$ ConnectionStrings:InformationUseConnectionString %>" SelectCommand="SELECT KBNORDER, KBNNAME FROM table1 WHERE (NO = @NO) AND (ITEMNO = @ITEMNO) ORDER BY KBNORDER" DeleteCommandType="StoredProcedure"> <SelectParameters> <asp:SessionParameter Name="NO" SessionField="BBList_NO" Size="2" Type="String" /> <asp:Parameter DefaultValue="01" Name="ITEMNO" Size="2" Type="String" /> </SelectParameters> </asp:SqlDataSource>

  • GridViewにグループ化して表示させたい

    ASP.NETの勉強のためにチームのメンバーを管理する ページを作っています。 VisualWebDeveloper2008のVBで作っています。 DBにはチーム名とチームの所属メンバーとメンバー一覧の3テーブルがあります。 これらをJOINしてGridViewに表示させたいと思います。 検索結果ではAチームに3人いる場合、3レコード取得されます。 画面に表示させるときには1レコードでメンバーの列だけ3行にしたいと思います。 Templateを指定するとできそうな気がするのですが、メンバーを検索するデータソースの条件にその行のチームコードを指定する方法が分かりません。 よろしくお願いします。

  • GridViewからチェックボックスでデータを選択し、次のページへ送信する動作について

    現在VisualWebDeveloper2005にて、セミナーの申し込みページを作成しています。 動作は、コース一覧(GridView)からチェックボックスで受けたいコースを選択し、GridViewの下にある[申し込む]ボタンを押すとGridViewからチェックがついている行のデータ(コースID)を取得し、次ページに送信→次ページでそのIDをもとにGridViewで詳細情報を表示する確認ページを作成したいと思っています。 GridViewの中にチェックボックスを作成し、チェックボックスがオンになっているもののみ、という部分まではプログラムが完成しているのですが、取得したデータを送信→次ページで受け取り表示の部分がわからずに困っています。 チェックした行のデータをSessionに入れようと考えたのですが 'チェックボックスがオンになっている時、その行のIDを取得してテキストボックスに表示 Protected Sub Button4_Click(ByVal sender As Object, ByVal e As System.EventArgs) For Each row As GridViewRow In GridView1.Rows Dim cb As CheckBox = CType(row.FindControl("cbSelect"), CheckBox) If cb.Checked Then Session("test") = row.Cells(1).Text Response.Redirect("kakunin.aspx") End If Next End Sub このプログラムだと複数の項目をチェックしても1つしかデータが送信されないのでどうすればいいかわからない状態です。 3日ほどどうすればいいかを検索してみたのですが、良い答えが見つからなかったので質問させていただきます。よろしくお願いします。

  • NULLで検索を行ったときは全件表示させたい

    VWD2008で簡単なDB検索アプリケーションを作成しています。 ページ内に Textboxコントロール(Textbox1)とButtonコントロール GridViewコントロール(GridView1)を配置しています。 データベース列の要素は id(番号) name(商品名) value(数量) として、テーブルの内容には下記内容が入力されています。 ------------------------- id    name   value 1    AAAA   1 2    AAAB   2 3    DDDD   3 -------------------------- テキストボックスに商品名を入力して、該当する商品だけを抽出させるのですが テキストボックスに何も入力せずに検索ボタンを押したときは すべてのDBの内容を表示させたいのです。 今のところ何も入力せずに検索しなかった場合はGridView上には 何も結果が出力されません。 GridViewのデータソースの構成によりWhere句の追加で 列:name 演算子:LIKE ソース:Control パラメータのプロパティ:TextBox1 規定値:何も入力せず(NULL?) と入力して追加ボタンを押すと以下のWHERE句が追加されました。 SELECT id, name, value FROM Table1 WHERE    ([name] LIKE '%' + @name + '%')) NULLで検索を行った場合に全件表示させたい場合 WHERE句はどのように設定するのが好ましいのでしょうか・・・、、 初歩的な質問で大変申し訳ありませんが教えてください。困っています。

  • DataGridViewで再表示すると変更不可にならない

    Visual Basic 2008 にて開発していますがDataGridViewについて質問させて下さい。 DataGridViewのデータ表示は、検索結果をDataTableに格納し、 そのDataTableをDataSourceに設定する方法で行っています。 DataGridView内にはチェックボックスがあり、 そのチェックボックスは条件によってReadOnly = Trueにて変更不可にして表示しています。 最初の表示は問題なく条件に合えば ReadOnly = Trueにて変更不可になり表示してくれますが、 再表示(DataTableをDataSourceに再代入)すると条件に合っているのにReadOnly = Trueが効かず、 チェックボックスが変更可能となって表示してしまいます。 ReadOnly=True にする方法は、DataGridView の件数を取得し、 jjCnt = 0 Do Until jjCnt >= ggCnt   If DataGridView1.Rows(jjCnt).Cells(88).Value.ToString() = "1" Then DataGridView1.Rows(jjCnt).Cells(0).ReadOnly = True End If jjCnt = jjCnt + 1 Loop で行っています。 何故、再表示だと変更不可にならないのか解らずご教授願いたく宜しくお願い致します。

  • アクセスフォーム上での検索結果の「文字化け」と複数検索条件を設定した時

    アクセスフォーム上での検索結果の「文字化け」と複数検索条件を設定した時にnullデータがあると抽出されない現象。 ○フォーム上で検索条件を設定させ、サブフォームに検索結果を表示した時 (1)サブフォームでのテキストデータが文字化けします。何度かクエリを実行して表示させているからでしょうか? (2)複数の検索条件をフォーム上で設定させるのですが、条件を選択しないと表示されない検索条件があります。これは何故でしょう?また、検索条件を設定しなくてもすべてのデータを表示させたいのですが、どのように設定すればよいのでしょうか? よろしくお願いします。