- - PR -
DataGrid内の値により削除確認メッセージを・・・
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-16 03:41
いつも質問ばかりですいません。
DataGrid内の内容を見て、条件に一致するときは 「削除してよろしいですか?」とメッセージを 表示し、それ以外のときは「削除できません」と 表示させたいと思っています。 @ DataGrid1_ItemDataBoundに ----------------------------- If DataGrid1.Items(e.Item.ItemIndex).Cells(.Text = 1 then btn.Attributes("OnClick") = "return confirm('---?')" endif ----------------------------- と記述するとエラーになってしまいます。 <エラー内容> インデックスが範囲を超えています。負でない値で、 コレクションのサイズよりも小さくなければなりません。 パラメータ名 : index 恐らくまだBindされていないからだと思います。 A 次にDataGrid1_ItemCommandに ----------------------------- If e.CommandName = "Delete" Then btn.Attributes("OnClick") = "return confirm('---?')" End If ----------------------------- と記述すると、削除ボタンを2度押さなければ メッセージが表示されません。 B 次に押して欲しくない行だけ削除ボタンを表示しないように してみては?と思ったのですが、方法が全くわかりませんでした。 過去スレッドも探して見たのですが、、、。 申し訳ございませんが、宜しくお願い致します。 | ||||||||
|
投稿日時: 2004-10-18 16:26
「恐らく」ではなく、ステップ実行なりTraceなりで検証しましょう。
でよいのでは? | ||||||||
|
投稿日時: 2004-10-19 14:18
>いつも質問ばかりですいません。
まずは、 .NET Tips/Webフォーム/DataGrid http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html#i14 を一通り読みましょう。 >(1) DataGrid1_ItemDataBound内で該当行のコントロールは e.Item.FindControlまたは e.Item.Cells[].Controls[] で アクセスするべきです。 >(2) 削除ボタンが押されたときのポストバックでDataGrid1_ItemCommandが走って、 btn.Attributes("OnClick") = "return confirm('---?')" が実行される。 削除ボタンを2度押したときにメッセージが表示のは当然です。 >(3) [ASP.NET]DataGridコントロールの削除ボタンで確認メッセージを表示するには? http://www.atmarkit.co.jp/fdotnet/dotnettips/104confirmdg/confirmdg.html のサンプルで if (押してほしくない行) { button.Visible = false; } もしくは if (押してほしくない行) { button.Attributes["OnClick"] = "alert('削除できません');return false;"; } | ||||||||
|
投稿日時: 2004-10-19 16:53
皆様、ありがとうございます。
お陰さまで解決いたしました。 DataGridに自動フォーマットのカラフル4を指定して 奇数行に色が付くようにしています。 todo様に教えていただいたボタン非表示をやってみて 気が付きました。 偶数行と奇数行の動きが違っていたのです。 DataGrid1_ItemDataBoundで以下のようにしてしていました。 ----------------------------------------------------- If e.Item.ItemType = ListItemType.SelectedItem OrElse _ e.Item.ItemType = ListItemType.AlternatingItem Then ・・・・・・・・ End If ----------------------------------------------------- 色の付いている偶数行のe.Item.ItemTypeの値を調べると ListItemType.SelectedItemではなく、 ListItemType.Itemであることが分かりました。 ですので、このようにしたらうまくできました。 ----------------------------------------------------- If e.Item.ItemType = ListItemType.Item OrElse _ e.Item.ItemType = ListItemType.AlternatingItem Then ・・・・・・・・ End If ----------------------------------------------------- DataGrid1_ItemDataBound内での該当行のコントロールも ご指摘通りに変更してエラーがでなくなりました。 検証方法をもう少し考えなければ、と反省いたしました;; |
1