個人事業主の方必見!確定申告のお悩み解決

ASP.NetのGridViewコントロールで、「選択」ボタンを表示せずに、グリッド行内の任意の場所をクリックすることでその行を選択する方法がわかりません。
DataGridコントロールについての実装方法はみつけたのですが(下記URL)、同じようにGridViewコントロールで実装すると「無効なポストバックまたはコールバック引数です」というサーバーエラーが発生してしまいます。
どなたか実装する方法についてご存知の方いらっしゃいましたら宜しくお願いします。

http://www.microsoft.com/japan/msdn/vs/WebApplic …

A 回答 (1件)

選択ボタンの列を 非表示にしていませんか?


非表示にするとコントロール自体を作成しなかったと思います
そのため例外が発生してしまうのではないかと思います

選択ボタンの テキストプロパティを無しにしてみてはいかがでしょう
    • good
    • 1
この回答へのお礼

ご回答ありがとございます!
ご指摘の通り、選択ボタン列を非表示にしていました。
選択ボタンのテキストプロパティを無しにしたら、列は表示されますが、ボタンは非表示となりました。
列も非表示にしたいとこですが、これでいけそうです。ありがとうございました!

お礼日時:2006/10/26 13:42

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QASP.NETでのメッセージ画面を出すには

はじめまして。
ASP.NET(C#)で、開発をしています。
例えば、内部である処理が終わった後に「完了!」みたいなメッセージ画面をポップアップさせたいと思っております。いろいろ調べてはいるんですが、方法がわかりません。JSを使わなければならないのかなとは思いますが、具体的な方法がわかりません。
よい方法がありましたら、教えていただけないでしょうか。よろしくお願いいたします。

Aベストアンサー

確認は取れていませんが、多分以下のHPの内容でいけると思いますが…。
参考に如何でしょうか。

・ASP.NETでメッセージボックス(OK・NO)の処理について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5952&forum=7&6

・Webアプリでメッセージボックスを使いたい
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1644&forum=7&7

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

環境: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"

お力添えをよろしくお願い致します。

環境:VS2008&VB.NET&ASP
GridViewに手動でテーブルからデータを読みデータバインドせず
DBの値を表示する方法を考えていますがうまくいかず困っています。
(データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。)
初心者のため見当違いなことをしているかもしれませんが
それも含めまして質問させていただきます。

質問1
そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。

質問2
以下のコードで試しまし...続きを読む

Aベストアンサー

GridViewのRowsコレクションに Addメソッド無いため
コードでGridViewの行の追加が不可能なように思います

DromDownListのItemsなどなら Addメソッドもあるので
バインドしないでも項目の追加が可能だと思われます

SQLServerなら SQLDataSource経由でバインドした方が扱いやすいかもしれませんよ
DataSource経由なら DataSetやDataAdapterなどもウィザードで生成されますし
Tableについても型指定されたDataTableの派生クラスが生成されます

VBに付属のMSDNなどで GridViewのページの中のリンクを参照してみてください

QASP.Net ラベルの内容をすぐに更新したい

大変お世話になっております。
昨年は大変お世話になり、多大なご教授をいただきました。
本年も何卒よろしくお願いいたします。

前々からお聞きしようと思っていたのですが、
処理によってラベルの内容がすぐに反映しないのですが
どのようにすればすぐに反映するのでしょうか?

例えば下記のような場合は、ラベルの内容を初期化したいのですが、
それがされるのは、ボタンの処理後になります。
ボタン処理の前にラベルを更新するにはどうすればいいのでしょうか?

もしかしたら 大変初歩的な質問かもしれませんが、
何卒よろしくお願いいたします。

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles RecDateButton.Click

  Me.Label1.Text = ""

  ここからボタンの処理が開始します

End Sub

Aベストアンサー

クライアント側で、ボタンがクリックされた瞬間に行う。
具体的には、クライアント側でボタンのonclickイベントで行う。

<input type="submit" onclick="document.getElementById('Label1').innerText = ''">

サーバーコントロールにクライアントイベント記述用のOnClientClickプロパティがあるので、そこに書く。
ポストバック時では遅いので、一回目のリクエストのときにonclickイベント付のボタンをブラウザに返す。

protected void Page_Load(object sender, EventArgs e)
{
Button1.OnClientClick = "document.getElementById('" + Label1.ClientID + "').innerText = ''";
}

サーバー側イベントとクライアント側イベントは別物だといことを理解するべし。

ユーザーがボタンをクリック
→ボタンのクライアントイベント(onclick)
→formのsubmit
→ブラウザがPOST
→ASP.NETがポストバックを受け取る
→Page_Loadやらいろいろ
→ボタンのサーバーイベント(Click)
→Renderやらいろいろ
→ブラウザにHTMLを返す
→ブラウザ側の表示

クライアント側で、ボタンがクリックされた瞬間に行う。
具体的には、クライアント側でボタンのonclickイベントで行う。

<input type="submit" onclick="document.getElementById('Label1').innerText = ''">

サーバーコントロールにクライアントイベント記述用のOnClientClickプロパティがあるので、そこに書く。
ポストバック時では遅いので、一回目のリクエストのときにonclickイベント付のボタンをブラウザに返す。

protected void Page_Load(object sender, EventArgs e)
{
Button1.OnClientClick = "docu...続きを読む

QGridviewとDataGridviewの違い

visual web developer2010を使用して
社内用の簡単なwebアプリケーションを作成しています。

DataGridViewとGridViewの違いは
やっとのことでなんとなく分かったのですが
(GridViewはDataGridViewの進化版?)

自分のやりたいことをネットで検索してコードを探すと
そのほとんどがDataGridViewを使用したものです。

Clipboard.SetDataObject(DataGridView1.GetClipboardContent())

たとえば上記のような感じです。

これをGridViewで使えるようにしたくて
自分なりにコードを書き換えたりしてみるのですが
(DataGridView1をGridView1にしてみたり、
DataGridView1をMe.DataGridView1にしてみたりしています)
すべてエラーになってしまいます。

だったらDataGridViewを設置したいと思うのですが
ツールバー内にDataGridViewはあるものの
色が薄くなっていて(グレーアウトみたいな感じです)選択できない状態です。

GridViewで、DataGridViewのコードを参考にして
少し書き換えれば動くようなことはないのでしょうか?
または
DataGridViewが使える方法を教えてください!

ご教授お願いいたします!

visual web developer2010を使用して
社内用の簡単なwebアプリケーションを作成しています。

DataGridViewとGridViewの違いは
やっとのことでなんとなく分かったのですが
(GridViewはDataGridViewの進化版?)

自分のやりたいことをネットで検索してコードを探すと
そのほとんどがDataGridViewを使用したものです。

Clipboard.SetDataObject(DataGridView1.GetClipboardContent())

たとえば上記のような感じです。

これをGridViewで使えるようにしたくて
自分なりにコードを書き換えたりしてみるのですが
(...続きを読む

Aベストアンサー

> DataGridViewとGridViewの違いは
> やっとのことでなんとなく分かったのですが

いや、この書き込みをみる限りではわかってないと思いますよ。

DataGridView:
 Windowsアプリケーション用のGridコントロール。
 Webでは使えません。

GridView:
 Webアプリケーション用のGridコントロール。
 Webなので、最終的にはHTMLに変換されます。

この一番基本的な違いがわかってないと思います。

> 自分のやりたいことをネットで検索してコードを探すと
> そのほとんどがDataGridViewを使用したものです。

Webアプリケーションの場合、すべてHTMLに変換されますから、
システムの動作はHTMLをベースに考える必要があります。
やりたいことを考えるうえで、HTMLだとどう動かせばよいか、
というところから学習するのがよいかと思います。

QASPで画面間のパラメタ受け渡し

こんばんは。ASP初心者です。
ASPでWEBページの作成を行っています。画面遷移をResponse.Redirect()で行っているのですが、遷移前のページと遷移後のページでパラメタを受け渡したい場合はSession("hoge") = "hogehoge"のようにセッションに入れる以外、何か方法はないでしょうか。リクエスト間でパラメタ渡せればがいいので、セッションを通じて保持しておく必要がないのです。クエリを使用するとアドレス欄に変数の値が見えてしまうのでできれば使いたくありません。

Aベストアンサー

1. Cookieを使う
2. 画面遷移を postで行い、hidden項目に値をセットする (要JavaScript)

私は面倒なのでセッション変数使ってますが、必要なくなればセッションをクリアすれば良いだけだと思います。

Session.Contents("hoge") = Empty

QWebページ上のボタン等の位置を移動したい。

こんにちわ。
いまASP.NETのWebフォームにパネルを置いて,その上にボタンなどのオブジェクトを配置しようとしています。
ところがフォームに直接ボタンを配置するときは,
任意の位置に配置できるのですが,
パネルの上だと任意の位置に配置できません。
VBのようにプロパティでx/y座標を指定しようと思ったのですが,
それらしいプロパティが見当たりません。
どうすれば任意の位置に配置できるでしょうか?
教えてください。よろしくお願いします。

Aベストアンサー

#1 です。

WebForm で何もコントロールを選択していない状態か、新規の WebForm で [レイアウト]-[位置]-[自動配置オプション] を選択。
<オプション> ダイアログの左側 [HTML デザイナ]-[CSS 配置] が開いてる状態になりますので、右側の配置オプションで [ツールボックス、貼り付け、またはドラッグ・・・] にチェックを入れて「絶対配置」を選択して [OK] をクリック。
コレ以降フォームに貼り付けたコントロールは絶対配置になりますので好きな場所に移動できます。

って方法もありますね。

QASP.NETでの縦・横スクロール

ヘッダーだけ別テーブルで記述し、DataGridを入れるDIVと全体を入れるDIVの二つで縦横スクロールを行っていますが、縦スクロールバーが
横スクロールしないと表示されない現象が発生しています。
これを横スクロールしないで常に縦スクロールバーが表示される方法はないものですか?

開発環境:VS2005

Aベストアンサー

縦スクロールのみなら質問者さんの手法でヘッダーと一覧部を別テーブルに作成、
一覧部分のみDIVに入れてkero_mioさんの「横スクロールバーのみを表示」パターンでやっていました。
たぶんExcelみたいにヘッダーを常に表示して一覧を縦横スクロールしていのですよね。
ややこしいですが出来る可能性はあります。
ソース的には参考URLの通り。
ただし補足説明の通り「互換モード」でないと動かないし、
css内のexpressionは確かIE5以上からのみなので利用ブラウザに制限がかかります。

参考URL:http://jsajax.com/CSSFixedHeaderColumnsArticle426.aspx,http://materia.useyan.jp/html/expression/issues.html

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

現在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日ほどどうすればいいかを検索してみたのですが、良い答えが見つからなかったので質問させていただきます。よろしくお願いします。

現在VisualWebDeveloper2005にて、セミナーの申し込みページを作成しています。
動作は、コース一覧(GridView)からチェックボックスで受けたいコースを選択し、GridViewの下にある[申し込む]ボタンを押すとGridViewからチェックがついている行のデータ(コースID)を取得し、次ページに送信→次ページでそのIDをもとにGridViewで詳細情報を表示する確認ページを作成したいと思っています。
GridViewの中にチェックボックスを作成し、チェックボックスがオンになっているもののみ、という部分まではプログラムが完成...続きを読む

Aベストアンサー

検索してもでてこないでしょう。
仕組みを考えて対応してください。

GridView1.Rows は、GridView1 のすべての行を返します。つまり、For ~ Next ループは 行数分繰り返されるわけですから、cb.Checked を判断したら、配列やリストなどに row.Cells(1).Text の値を貯めていって、ループが終わってから、セッション変数に格納します。

QGridViewの行をダブルクリック

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

Aベストアンサー

現在のベースが何もない状況で、コーディング例提示は難しいかと。。

どの部分の手順が知りたいのかわからないので、概要を申し上げます。

■jQueryライブラリを読込む
■データバインディングコントロール(GridView/ListView等)のItemTemplateで、LabelControl等にCssClass="dClickDetect"とか記述する。
■jQueryで、"dClickDetect"クラスのエレメントに、ダブルクリック時のイベントハンドラを定義する
■上記イベントハンドラに、別窓でASPXを開く手順を書く
(開き方はオーソドックスなwindow.open、jQueryUIやjQuery thickBoxなどのビルトインダイアログなど。)

■ダブルクリック検知は、ブラウザ制御になるため、JavaScript対応になります。

GridViewが生成する複数行項目に対応させる方法はいくつかありますが、クラス名を付けておき、一括イベントハンドラ登録が最もシンプルです。

$(function(){
$('.dClickDetect').dblclick(
function() {
window.open("ShowDetail.aspx?itemID=xxxx","detail",各種オプション);
}
);
});

(イベントハンドラを登録する要素数が非常に多い場合、ブラウザ動作がやや重くなります)

現在のベースが何もない状況で、コーディング例提示は難しいかと。。

どの部分の手順が知りたいのかわからないので、概要を申し上げます。

■jQueryライブラリを読込む
■データバインディングコントロール(GridView/ListView等)のItemTemplateで、LabelControl等にCssClass="dClickDetect"とか記述する。
■jQueryで、"dClickDetect"クラスのエレメントに、ダブルクリック時のイベントハンドラを定義する
■上記イベントハンドラに、別窓でASPXを開く手順を書く
(開き方はオーソドックスなwindow.open、jQueryUI...続きを読む

QASP.netで、CheckBoxListのSelectedIndexChangedが発生しません!

はじめまして、宜しくお願いします。

ASP.netのC#で開発を行っています。

チェックボックスリストのチェックボックスをチェックした際に、
SelectedIndexChangedイベントが発生しサーバ側で受け取れる
はずだと思っているのですが、全くポストバックされていないようです。

プロパティの「AutoPostBack」はTrueにしています。

ほかに条件はありますでしょうか?
ご存知の方がいらっしゃいましたら、宜しくお願い致します。

Aベストアンサー

もしかして、先ほど、
http://okwave.jp/qa4974802.html
で質問したやり方で、動的に選択項目を生成しているからイベントが発生しないとか?いや、それはないかなぁ。AutoPostBackもTrueみたいですし。

一応、イベント設定方法のやり方は2種類あるのでどちらかお好きな方でおためしください。

方法1:
CheckBoxList を定義している個所に
「OnSelectedIndexChanged="イベント処理用メソッド名"」
を記述する

例:
<asp:CheckBoxList
ID="CheckBoxList1"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged">
</asp:CheckBoxList>

方法2:
Page_Init や Page_Load などのイベントで、
CheckBoxList1.SelectedIndexChanged += new EventHandler(イベント処理用メソッド名);
を記述する

例:
protected void Page_Init(object sender, EventArgs e)
{
  CheckBoxList1.SelectedIndexChanged += new  EventHandler(CheckBoxList1_SelectedIndexChanged);
}

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
  // 選択された時の処理を書く
  if (CheckBoxList1.SelectedIndex > -1)
  {
    Label1.Text = CheckBoxList1.SelectedValue;
  }
  else
  {
    Label1.Text = string.Empty; 
  }
}

また、わからなければご連絡ください。

もしかして、先ほど、
http://okwave.jp/qa4974802.html
で質問したやり方で、動的に選択項目を生成しているからイベントが発生しないとか?いや、それはないかなぁ。AutoPostBackもTrueみたいですし。

一応、イベント設定方法のやり方は2種類あるのでどちらかお好きな方でおためしください。

方法1:
CheckBoxList を定義している個所に
「OnSelectedIndexChanged="イベント処理用メソッド名"」
を記述する

例:
<asp:CheckBoxList
ID="CheckBoxList1"
runat="server"
AutoPo...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング