C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 再度質問です(すみません)


(過去ログ 56 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■31640 / inTopicNo.1)  再度質問です(すみません)
  
□投稿者/ あや (4回)-(2009/01/26(Mon) 15:59:46)

分類:[C#] 

開発環境:VS2005 .NET2.0

はじめまして、アヤといいます。

以下のコードで、DataGridViewにBindし、Bindした項目を編集したいのですが、値が取得できずに困っています。
<----------------------
SqlDataAdapter Da = new SqlDataAdapter(this.sql.ToString(), this.sqlConnection);
DataTable tbl = new DataTable();
Da.Fill(tbl);

this.DataGridView.DataSource = tbl;
this.DataGridView.DataBind();
------------------------>

protected void DataGridView_DataBound(object sender, EventArgs e)
protected void DataGridView_RowDataBound(object sender, GridViewRowEventArgs e)
の両方を使ってみたのですが、うまく値が取得できませんでした。
どのように値を取得すべきか教えていただけないでしょうか?
ググってみたのですが、うまくヒントを見つけれませんでした。
よろしくお願いします。

VS2003のときは
VS2003では一度Bindした後に、
private void DataGridView_ItemDataBound(object sender, DataGridItemEventArgs e)
{
  DataRowView drv=(DataRowView)e.Item.DataItem;
  ((Label)e.Item.FindControl("LblPhotoID")).Text=drv["after_value"].ToString();
}
の感じでデータを編集しておりました。

VS2005では、protected void DataGridView_DataBound(object sender, EventArgs e)
の中で、e.Itemが使えず、eの中身を見ても値を取得してくれません。
どのように記述すればよいのでしょうか?
どうしても困ってしまって、調べても分かりません。どなたかご教示下さい。
お願い致します。
引用返信 編集キー/
■31643 / inTopicNo.2)  Re[1]: 再度質問です(すみません)
□投稿者/ みきぬ (347回)-(2009/01/26(Mon) 16:21:02)
2009/01/26(Mon) 16:29:54 編集(投稿者)

とりあえず、質問にある this.DataGridView なるものは、
実は DataGridView という名称の GridView オブジェクトであると勝手に解釈するとして…

> protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)

この e.Row (GridViewRow オブジェクト)に入ってない?
それともイベントが発生しない?

-----
勘違いしてたっぽいので後半部分を差し替え。
引用返信 編集キー/
■31644 / inTopicNo.3)  Re[2]: 再度質問です(すみません)
□投稿者/ あや (5回)-(2009/01/26(Mon) 16:30:52)
みきぬさんありがとうございます。

オブジェクトはGridViewです。
tblにはデータも入っており、Bindしたデータは正しく表示されます。
ここで分からないのは、VS2003ではItemDataBoundの
e.Item.FindControlで取得していたデータをどうやって、Vs2005のDataBoundで取得すれば
よいのかと思いまして、その記述が分からないんです。。。
困ってしまっています。

No31643 (みきぬ さん) に返信
> とりあえず、質問にある this.DataGridView なるものは、
> 実は DataGridView という名称の GridView オブジェクトであると勝手に解釈するとして…
>
> ・tbl にデータが入っていない
> ・GridView の列名と、データの列名の対応がとれていない(かつ GridView の AutoGenerateColumns プロパティが False)
>
> といったあたりがあやしいかな。
引用返信 編集キー/
■31647 / inTopicNo.4)  Re[2]: 再度質問です(すみません)
□投稿者/ あや (6回)-(2009/01/26(Mon) 16:40:21)
2009/01/26(Mon) 16:45:34 編集(投稿者)
2009/01/26(Mon) 16:45:22 編集(投稿者)
みきぬさん、返信ありがとうございます。

>>protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
イベントは正常に発生しております。
試しに、
string aaa = e.Row.FindControl("FileExt").ToString();
とした場合、コンパイルは通るのですが、デバッグ時に
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」とでてしまい、
エラーとなってしまいます。

No31643 (みきぬ さん) に返信
> 2009/01/26(Mon) 16:29:54 編集(投稿者)
>
> とりあえず、質問にある this.DataGridView なるものは、
> 実は DataGridView という名称の GridView オブジェクトであると勝手に解釈するとして…
>
>>protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
>
> この e.Row (GridViewRow オブジェクト)に入ってない?
> それともイベントが発生しない?
>
> -----
> 勘違いしてたっぽいので後半部分を差し替え。
引用返信 編集キー/
■31651 / inTopicNo.5)  Re[3]: 再度質問です(すみません)
□投稿者/ みきぬ (348回)-(2009/01/26(Mon) 16:58:47)
No31647 (あや さん) に返信

説明すると大変なので、↓のあたりを見てもらえますか?
http://mitc.xrea.jp/diary/055#p2.5
引用返信 編集キー/
■31653 / inTopicNo.6)  Re[4]: 再度質問です(すみません)
□投稿者/ あや (7回)-(2009/01/26(Mon) 17:16:35)
No31651 (みきぬ さん) に返信
> ■No31647 (あや さん) に返信
>
> 説明すると大変なので、↓のあたりを見てもらえますか?
> http://mitc.xrea.jp/diary/055#p2.5

みきぬさん、参照させていただきました。
しかしながら私が初心者のため、今ひとつ理解ができません。
あつかましいお願いですが、ヒントになるコードなどご提示いただけないでしょうか?
引用返信 編集キー/
■31654 / inTopicNo.7)  Re[5]: 再度質問です(すみません)
□投稿者/ みきぬ (349回)-(2009/01/26(Mon) 17:21:34)
No31653 (あや さん) に返信
> みきぬさん、参照させていただきました。
> しかしながら私が初心者のため、今ひとつ理解ができません。
> あつかましいお願いですが、ヒントになるコードなどご提示いただけないでしょうか?

私としてはヒントになるコードを提示したつもりですので、
それでわからないと言われると、すいませんが私にはどうしようもないです。
引用返信 編集キー/
■31658 / inTopicNo.8)  Re[3]: 再度質問です(すみません)
□投稿者/ いしだ (190回)-(2009/01/26(Mon) 20:37:14)
こんばんは。
ASP.NETと想定して返信します。

> string aaa = e.Row.FindControl("FileExt").ToString();
> とした場合、コンパイルは通るのですが、デバッグ時に
> 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」とでてしまい、
> エラーとなってしまいます。

おそらく、HeaderとかFooter行でFindControlしてエラーとなっているのではないでしょうか。

if (e.Row.RowType == DataControlRowType.DataRow) // データ行の場合
{
    string aaa = e.Row.FindControl("FileExt").ToString();
}

のようにしてみて下さい。

引用返信 編集キー/
■31667 / inTopicNo.9)  Re[4]: 再度質問です(すみません)
□投稿者/ あや (8回)-(2009/01/27(Tue) 09:02:37)
いしださん、返信ありがとうございます。

うまく解決できました。
いしださんのコードで大丈夫でしたが、FileExtがDataGridViewのDataFieldになっていたので、
それを変数化(Cell[])して処理できました。
ありがとうございました。大変助かりました。

No31658 (いしだ さん) に返信
> こんばんは。
> ASP.NETと想定して返信します。
>
>>string aaa = e.Row.FindControl("FileExt").ToString();
>>とした場合、コンパイルは通るのですが、デバッグ時に
>>「オブジェクト参照がオブジェクト インスタンスに設定されていません。」とでてしまい、
>>エラーとなってしまいます。
>
> おそらく、HeaderとかFooter行でFindControlしてエラーとなっているのではないでしょうか。
>
> if (e.Row.RowType == DataControlRowType.DataRow) // データ行の場合
> {
> string aaa = e.Row.FindControl("FileExt").ToString();
> }
>
> のようにしてみて下さい。
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -