- - PR -
GridViewの編集機能について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-27 19:05
お世話になっております。
VS2005でWeb開発を行っているのですが、 GridViewの編集機能についてお聞きしたいことがあります。 編集ボタンクリック時に、条件によって編集可能な列を変更することは 可能なのでしょうか。 RowEditing時に列のReadOnlyを変更するイメージがあるのですが。 このような事をやっておられる方はおられますでしょうか? | ||||||||
|
投稿日時: 2006-07-27 19:58
何がひっかかる(orできない orわからない)なのでしょうか?現在RowEditingでどうやってます? | ||||||||
|
投稿日時: 2006-07-28 09:26
RowEditing内で的外れかもしれませんが以下のように記述しました。
Dim row As GridViewRow = GridView2.Rows(e.NewEditIndex) Dim name As TextBox = CType(row.Cells(7).Controls(0), TextBox) name.ReadOnly = True GridViewの中 <asp:BoundField DataField="Name" HeaderText="Name"> <ItemStyle HorizontalAlign="Center" /> </asp:BoundField> このように記述いたしますと、以下のエラーとなります。 指定された引数は、有効な値の範囲内にありません。 パラメータ名: index ただ「GridView2.Rows(e.NewEditIndex).Cells(7).Text」を記述いたしますと 表示内容は取得できます。 おそらく「TextBox」の箇所が誤っているかと思うのですが・・・ | ||||||||
|
投稿日時: 2006-07-28 17:14
ああなるほど。TextBoxのReadOnlyか。
BoundField自体のReadOnlyをtrueにしてあげると、そのフィールドは編集不可 つまりTextBoxとしてではなくLabelのように表示されます。 それではダメであくまでTextBoxとして見せた上でReadOnlyにするのが要件なのですか? だとすると、RowEditingの時点ではまだTextBoxは生成されていないようです。
一応RowCreatedだとTextBoxとして取ることができます。 このイベントはいろんなタイミングで発生するので細かい判定が必要ですが。 | ||||||||
|
投稿日時: 2006-07-31 09:31
TextBoxのReadOnlyを行おうとしておりましたが、
BoundField自体のReadOnlyを操作できるのであれば、 問題はございません。 ただ「RowEditing内でのBoundField自体のReadOnlyを操作」につきまして、 検討がつきません。 よろしければ教えて頂けないでしょうか。 | ||||||||
|
投稿日時: 2006-07-31 13:26
GridView2.Columns[7]
これでDataControlField型のオブジェクトが取得できるので、これを BoundFieldにキャストすると、ReadOnlyが設定できます。 | ||||||||
|
投稿日時: 2006-07-31 15:54
教えて頂きました方法で無事処理ができました。
お世話になりました。ありがとうございました。 |
1