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

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

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

Re[5]: GridViewの現在行の取得方法について


(過去ログ 27 を表示中)

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

■12417 / inTopicNo.1)  GridViewの現在行の取得方法について
  
□投稿者/ 純@WAS (1回)-(2008/01/09(Wed) 14:35:48)

分類:[ASP.NET (C#)] 

お世話になります。

表題についてご回答頂ければと思います。

【やりたいこと】
現在の行を取得し、その行について更新をかけたり、ロールバックをかけたりする

【疑問点】
以前使用していた環境では(言語C#、VS2003)、DataGridを使用しており、
行表示にはCurrentRowIndexが使用できたので、それを使用し取得しておりましたが、
現在GridViewを使用しており、CurrentRowIndexなるものがありません。

私の知識不足ではございますが、どのようにすれば現在行を調べられるのかご教示ください。

環境は、Windows XP、Visual Studio 2005、ASP.NET(C#)です。
引用返信 編集キー/
■12421 / inTopicNo.2)  Re[1]: GridViewの現在行の取得方法について
□投稿者/ THREE-ONE (20回)-(2008/01/09(Wed) 14:54:59)
System.Web.UI.WebControls.DataGrid には CurrentRowIndex はありませんよ。
System.Windows.Forms.DataGrid にはあるようなので勘違いしていらっしゃるのではないでしょうか?
もしくは CurrentPageIndex か SelectedIndex の勘違いかもしれません。
どのタイミングで現在行を取得したいのか、推し量りかねますが、SelectedIndex か RowUpdating のような行ごとのイベントを使うのがいいんじゃないでしょうか?<GridView
引用返信 編集キー/
■12422 / inTopicNo.3)  Re[2]: GridViewの現在行の取得方法について
□投稿者/ 純@WAS (2回)-(2008/01/09(Wed) 15:19:40)
早速のご指摘ありがとうございます。
自分でも少々混乱しており、変な質問をしてしまい申し訳ございません。

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
を入れることにより、編集ボタンを押下したときに、その行の項目に編集用のテキストボックスは
表示されるようになっております。

しかし、更新ボタンを押下したときにその変更内容を反映させるには
どのようにすればよいかで悩んでおります。

ソースの一部ですが、添付いたします。

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
   // 更新を反映させるための処理
  // 現在ここで悩み中

   // 更新内容をテーブルアダプタに記載
  ClassLibrary1.UserDataSetTableAdapters.userTableAdapter ta = new ClassLibrary1.UserDataSetTableAdapters.userTableAdapter();
   ta.Update(ds.user);

  // 編集モードを解除
   GridView1.EditIndex = -1;
}

上記ソースをご参照の上、アドバイス頂ければ幸いです

引用返信 編集キー/
■12424 / inTopicNo.4)  Re[3]: GridViewの現在行の取得方法について
□投稿者/ 純@WAS (4回)-(2008/01/09(Wed) 16:12:57)
No12422 (純@WAS さん) に返信
> 早速のご指摘ありがとうございます。
> 自分でも少々混乱しており、変な質問をしてしまい申し訳ございません。
>
> protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
> を入れることにより、編集ボタンを押下したときに、その行の項目に編集用のテキストボックスは
> 表示されるようになっております。
>
> しかし、更新ボタンを押下したときにその変更内容を反映させるには
> どのようにすればよいかで悩んでおります。
>
> ソースの一部ですが、添付いたします。
>
> protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
> {
> // 更新を反映させるための処理
>   // 現在ここで悩み中
>
> // 更新内容をテーブルアダプタに記載
>   ClassLibrary1.UserDataSetTableAdapters.userTableAdapter ta = new ClassLibrary1.UserDataSetTableAdapters.userTableAdapter();
> ta.Update(ds.user);
>
>   // 編集モードを解除
> GridView1.EditIndex = -1;
> }
>
> 上記ソースをご参照の上、アドバイス頂ければ幸いです

ちょっと強引な方法かもしれませんが、どうにか自己解決できそうです。
FindByunique_idを使い、ユニークIDで該当行の該当項目を選択する処理にしました。
その後、変更があれば、変更した値を代入するようループをまわすことにより糸口がつかめました。

ご指摘を頂き、ありがとうございました
解決済み
引用返信 編集キー/
■12425 / inTopicNo.5)  Re[3]: GridViewの現在行の取得方法について
□投稿者/ THREE-ONE (21回)-(2008/01/09(Wed) 16:14:25)
GridViewUpdateEventArgs には NewValues と OldValues というプロパティがありますので、この中を確認してみてはいかがでしょう?
ところで ObjectDataSource やら SqlDataSource などを使用してらっしゃらないのですか?
単にデータを格納するだけでしたら、DataSource を使えば RowUpdating などは記述する必要ないかと思いますが。
引用返信 編集キー/
■12426 / inTopicNo.6)  Re[4]: GridViewの現在行の取得方法について
□投稿者/ THREE-ONE (22回)-(2008/01/09(Wed) 16:14:57)
あ、解決されてたのですね。
失礼しました。
引用返信 編集キー/
■12483 / inTopicNo.7)  Re[5]: GridViewの現在行の取得方法について
□投稿者/ 純@WAS (5回)-(2008/01/10(Thu) 09:53:01)
チェックを入れ忘れました。
すいません。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -