質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

4547閲覧

AutoGenerateEditButtonの編集、更新ボタン処理を独自に記述したい

doremifa

総合スコア33

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2016/11/22 06:30

編集2016/11/22 07:10

###前提・実現したいこと
GridViewのAutoGenerateEditButtonにTrueを設定し
表示される更新ボタンを押された時の処理を独自にしたい。

具体的には
1.編集ボタンがおされる
2.すでに用意されているprivateメソッドコール
3.対象行の特定セルを編集モードに

4.更新ボタンがおされる
5.すでに用意されているprivateメソッドコール
6.対象行の編集モードを解除

###補足情報(言語/FW/ツール等のバージョンなど)
ドットネットフレームワーク4.5.2
C#
Webform

Gridviewにはdatasourceが設定されておらず
(別理由によりできない)、
pageloadでSqlDataAdapterを宣言し、SelectCommandを
設定後fillしている

別にボタンを設置等ではなくAutoGenerateEditButtonを
利用したい

###ためしたこと
RowEditingハンドラでメソッドを呼ぶことはできるが、
編集モードにならず抜けてしまう

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/11/22 10:03

質問者さんの問題が具体的に理解できるようなコードをアップできませんか? 今の質問の文章だけでは何が質問者さんの課題・問題で、何を解決すればいいのかさっぱり分かりません。
退会済みユーザー

退会済みユーザー

2016/11/22 10:17

データ ソース コントロール (SqlDataSource、ObjectDataSource など) を使ってないように見えますが、その場合組み込みの並べ替え、更新、削除、ページング機能は利用できないので、全て自力でコードを書いて実装しなければならないのは理解されてますか? そしてそのコードは実装しましたか? どうもそのあたりが理解されてないように思えますが。
doremifa

2016/11/24 04:59

>>全て自力でコードを書いて実装しなければならない それを実装するためにAutoGenerateEditButton=Trueで表示される編集ボタンの処理を記述したいのですが不可能でしょうか。
退会済みユーザー

退会済みユーザー

2016/11/24 08:29

> 不可能でしょうか  不可能ではないと思いますが、あなたが提供している情報だけでは、どのようにしたら可能にできるかは皆目見当がつかないのです。(要するに情報不足です)
guest

回答1

0

ベストアンサー

回答内容に間違いがあります。
この回答コメント(SurferOnWwwさんのコメント)を参照ください。


「Gridviewにはdatasourceが設定されておらず」の場合は、GridView.AutoGenerateEditButton プロパティの仕様上できません。
(msdn)GridView.AutoGenerateEditButton プロパティ

解説
更新機能をサポートしているデータ ソース コントロールが GridView コントロールにバインドされている場合、GridView コントロールは、データ ソース コントロールの機能を利用して、自動更新機能を提供します。

もしどうしても可能としたい場合は、Gridviewを継承したカスタムコントロールを作成し、GridView.AutoGenerateEditButton プロパティの仕様を自力で拡張してください。そして作成したカスタムコントロールを使用してください。

C#

1public virtual bool AutoGenerateEditButton { get; set; }

とvirtualになっているのでGridViewは継承することを想定されたコントロールだと思います。
なので不可能ではないと思います。

投稿2016/11/24 06:56

編集2016/11/24 08:23
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doremifa

2016/11/24 06:59

ありがとうございます。 大変参考になりました。
退会済みユーザー

退会済みユーザー

2016/11/24 08:12

横から失礼します。 「Gridviewを継承したカスタムコントロールを作成」という必要はないはずです。 AutoGenerateEditButton="True" に設定すれば[編集]ボタン(a 要素の href 属性に __doPostBack('GridView1','Edit$0') というスクリプトが設定されたもの)が生成されますので、それをクリックすればポストバックがかかって GridView.RowEditing イベントが発生します。 SqlDataSource などのデーターソースコントロールが GridView の DataSourceID に設定されている場合は RowEditing イベントのハンドラが自動的に定義されていて、そのハンドラで GridView の当該行を編集モードに変更します。 SqlDataSource などのデーターソースコントロールを使っていない場合は、自力で RowEditing イベントのハンドラを書いて GridView の当該行を編集モードに変更しなければならないと言うことです。 その他、RowCancelingEdit、RowUpdating イベントなども同様で、SqlDataSource などのデーターソースコントロールを使ってない場合は自力でハンドラを書いて必要な処置ができるようにしなければならないということです。
Y.H.

2016/11/24 08:20

@SurferOnWww ありがとうございます。適切なdatasourceがバインドされているときのみ以下挙動になると思い込んでました。カスタムコントロール作るよりは実装かるくなりますね。 >AutoGenerateEditButton="True" に設定すれば[編集]ボタン >(a 要素の href 属性に __doPostBack('GridView1','Edit$0') というスクリプトが設定されたもの) >が生成されますので、それをクリックすればポストバックがかかって >GridView.RowEditing イベントが発生します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問