人に聞けない痔の悩み、これでスッキリ >>

visual studio 2008でasp.netを使って開発しようと考えています。
以下の要件を満たすgridを作成できますか?

(1)ブラウザ上で行を追加・削除できる
(2)ブラウザ上で各項目を編集できる
(3)ブラウザ上で指定したカラムをキーにソートできる

またgridについて詳しく解説してあるサイト・書籍等ありましたら教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ASP.NET GridView で検索すればなんぼでも出てきます。



http://dotnetfan.org/blogs/dotnetfanblog/article …
http://jsajax.com/aspGridView/Toc.aspx
    • good
    • 0
この回答へのお礼

ASP.NETのGRID VIWEではpost backが発生するんですねぇ。。それじゃダメなのです。

お礼日時:2010/03/15 01:33

このQ&Aに関連する人気のQ&A

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

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

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

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.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のページの中のリンクを参照してみてください

QDataSet(DataTable)の使い方

GridViewやListViewなどに動的にデータを追加していきたいので、
DataTableを使おうと思いました。

下記、(1)のようにPageLoadイベントで1行追加することはできたのですが、
ボタンを押すごとに、1行ずつ追加していきたいので(2)のように修正したのですが、
ボタンを押したときのポストバックで、DataSetもDataTableもnullになってしまい、
行の追加ができません。
ボタンを押すごとにどんどん行を追加していきたいのですが、このような場合は
どのようにDataSetもDataTableを保持しておけば良いのでしょうか。

(1)
public partial class WebForm1 : System.Web.UI.Page
{

int count = 0;

protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{

DataSet dS = new DataSet("dS");
DataTable dT = new DataTable("dT");

// データテーブル カラム作成
dT.Columns.Add("no", typeof(int));
dT.Columns.Add("name", typeof(string));
dT.Columns.Add("kind", typeof(string));
dT.Columns.Add("time", typeof(int));
dS.Tables.Add(dT);

DataRow dR = dT.NewRow();
dR["no"] = count;
dR["name"] = count.ToString();
dR["kind"] = count.ToString();
dR["time"] = count;
dT.Rows.Add(dR);

// リストビュー データソース選択
ListView2.DataSource = dS;
ListView2.DataBind();

}

}
}


(2)
public partial class WebForm2 : System.Web.UI.Page
{
int count = 0;
DataSet dS;
DataTable dT;

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

dS = new DataSet("dS");
dT = new DataTable("dT");

// データテーブル カラム作成
dT.Columns.Add("no", typeof(int));
dT.Columns.Add("name", typeof(string));
dT.Columns.Add("kind", typeof(string));
dT.Columns.Add("time", typeof(int));
dS.Tables.Add(dT);

}
}

protected void Button1_Click(object sender, EventArgs e)
{
count = count + 1;

DataRow dR = dT.NewRow();
dR["no"] = count;
dR["name"] = count.ToString();
dR["kind"] = count.ToString();
dR["time"] = count;
dT.Rows.Add(dR);

// リストビュー データソース選択
ListView2.DataSource = dS;
ListView2.DataBind();

}
}

GridViewやListViewなどに動的にデータを追加していきたいので、
DataTableを使おうと思いました。

下記、(1)のようにPageLoadイベントで1行追加することはできたのですが、
ボタンを押すごとに、1行ずつ追加していきたいので(2)のように修正したのですが、
ボタンを押したときのポストバックで、DataSetもDataTableもnullになってしまい、
行の追加ができません。
ボタンを押すごとにどんどん行を追加していきたいのですが、このような場合は
どのようにDataSetもDataTableを保持しておけば良いのでしょうか。...続きを読む

Aベストアンサー

#1です。

自分は DataTable を使う場合、TableAdapter を使った「強い型つき」DataTable しか使わないので、そもそも、単なる DataTable の入れ物にすぎない DataSet を使う習慣がないのですが、

var sampleDataTable = new SampleTableAdapter.Get_All();
ListView2.DataSource = sampleDataTable;

普通は、DataTable をバインドするのと違いますか?
DataSet をバインドすると、たしかデフォルトで DataSet 中に定義された先頭の DataTable がバインドされるので、ご提示のケースですと、 dS にdT が収められていないだけのような気がするのですが。

Q[ASP.NET]DropDownListのDB連携のやり方。

こんにちわ。
VS.NET2003で、ASP.NET+C#で開発しております。
ちょっと悩んでしまったので、質問させてください。

とある入力フォームを作成しようと思っているのですが、そのフォームにDBと連携したDropDownListを複数配置させたいと考えております。
で、とりあえず1つ連携させてみたのですが、これを複数やるのってなんだかなぁ。っと思ってしまいました。

連携の方法としては、
(1)sqlDataAdapterを作成、クエリを作る。
(2)sqlDataAdapterからdataSetオブジェクトを作成する。
(3)Page_LoadメソッドにてsqlDataAdapter.Fill(dataSetオブジェクト)を実行し、DataBindする

なんですが、これDropDownListの数だけsqlDataAdapter作らなくちゃいけないんですかねぇ?途中で端折れるところや、使いまわし出来る部分がありましたら、どなたか教えてください。

よろしくお願いします。

Aベストアンサー

VS.NETでVisualにやる方法でやる方法がありますが、
これは初心者向けです。
コードを自分で書いた方が効率がよい。

例えば、データテーブルの読み込みメソッドを共通クラスに置く。

public DataTable ReadDataTable(string strSQL)
{
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = new OleDbCommand(strSQL, 接続);
da.Fill(dt);
return dt;
}

Page_Loadでは

DropDownList1.DataSorce = 共通クラス.ReadDataTable("select * from TableHoge");
DropDownList1.DataBind();

Qテキストボックスにクエリ結果を表示させたい

フォームにテキストボックスAがあり、そこに入力した文字(下記テーブルのフィールド1の文字)をクエリーの「抽出条件」にし、同じフォーム上のテキストボックスBに表示しようと思っています。

クエリを開くとパラメータの入力を求めてきて、入力するとうまく抽出されます。

テーブルは
フィールド1|フィールド2
  A   |  10
  B   |  20
  C   |  30
  D   |  40
のような簡単なものです。

テキストボックスBのコントロールソースに
「=[○×クエリ]![フィールド2]とやっても「#Name?」と表示されてしまいます。

どのようにやればよいのでしょうか?

Aベストアンサー

クエリは必要ありません。

フォームのレコードソースに無いデータを表示させる
場合には DLookUp を使います。

テキストボックスBのコントロールソースに
=DLookUp("フィールド2","テーブル名","フィールド1='" & [テキストボックスA]) & "'"

上記は「フィールド1」が文字列型の場合です。

数値型の場合は次のようになります。
=DLookUp("フィールド2","テーブル名","フィールド1=" & [テキストボックスA])

DLookUp 関数は コントロールソースに限らず
VBA でも使用し、Access では、非常に使用頻度の高いものです。

ヘルプで調べて、ぜひマスターしてください。

もし Access でなかったら、このレスは無視して下さい。

QVB.NETでボタンクリックイベントの後に来るPage_Loadのようなイベントはありますか?

タイトルのとおりなのですが、
VB.NETでボタンクリックイベントの後に来るPage_Loadのようなイベントはありますか?
教えてくださいーー

Aベストアンサー

お世話になります。

ボタンを押そうが何をしようが、
PostBack するたびに、Page_Load は走りますよ。
そこで判断をしたいのであれば、
Page.Load イベント内で以下の様に記述してやれば
よいかもしれません。

If IsPostBack Then
  ' 初めてページを読み込んだ時処理
Else
  ' そうでない時処理
  If Not Request("ボタンの name") Is Nothing Then
    ' ボタン押下により発生した PostBack
  End If
End If

参考URL:http://msdn2.microsoft.com/ja-JP/library/system.web.ui.page.ispostback.aspx

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

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からテンプレートフィールドのEvalにおける、値の取得

現在VisualStudio2005 ASP.NET VBで作成しております。


現在、GridViewを使用しておりまして、バウンドフィールド、ハイパーリンクフィールド、テンプレートフィールド、
をそれぞれ、配置しております。


<asp:ButtonField DataTextField="expression_no" HeaderText="No" SortExpression="expression_no"
Text="ボタン" CommandName="Details" >
<ItemStyle CssClass="GridBorder" />
</asp:ButtonField>

<asp:BoundField DataField="item_name" HeaderText="商品名" SortExpression="item_name" >
<ItemStyle CssClass="GridBorder" />
</asp:BoundField>


<asp:TemplateField HeaderText="年額" SortExpression="moneyPerYear">
<ItemStyle HorizontalAlign="Right" CssClass="GridBorder" />
<ItemTemplate>
<asp:Label ID="moneyPerYearGrid" runat="server" Text='<%# Eval("moneyPerYear", "{0:c0}") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lblSummary1" runat="server" ForeColor="Red"></asp:Label>
</FooterTemplate>
<FooterStyle HorizontalAlign="Right" />
</asp:TemplateField>



ハイパーリンクフィールドがクリックされたタイミングで、そのクリックされた行の、データを取得したいと考えております。



Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs)
' コマンド名が“Details”の場合にのみ処理
If e.CommandName = "Details" Then

' 主キー(isbn列)の値を取得
Dim isbn As String = GridView1.DataKeys(e.CommandArgument).Value.ToString
Session("Gridrow") = GridView1.Rows(e.CommandArgument)

Dim datarow As TableRow = Session("GridRow")

Labaffiliation_name.Text = datarow.Cells(0).Text '証明No
Labinsurance_item_name.Text = datarow.Cells(1).Text '商品名
LabPerYearContract.Text = datarow.Cells(2).Text '年金額


End If
End Sub

下記のプログラムを実行すると、データが取得できるのはバウンドフィールドでGridViewにデータバインドしている
Labinsurance_item_name.Text = datarow.Cells(1).Text '商品名
のみで、他のフィールドのデータが取得できません。

どなたかご教授いただけますと幸いです。

現在VisualStudio2005 ASP.NET VBで作成しております。


現在、GridViewを使用しておりまして、バウンドフィールド、ハイパーリンクフィールド、テンプレートフィールド、
をそれぞれ、配置しております。


<asp:ButtonField DataTextField="expression_no" HeaderText="No" SortExpression="expression_no"
Text="ボタン" CommandName="Details" >
<ItemStyle CssClass="GridBorder" />
...続きを読む

Aベストアンサー

テンプレートフィールドになった時点で、
DataListと同様の扱いになるため、値を取得する場合はFindControlで取得します。

http://msdn.microsoft.com/ja-jp/library/aa479353.aspx


人気Q&Aランキング