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

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

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

gridview return confirm について

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

■93122 / inTopicNo.1)  gridview return confirm について
  
□投稿者/ ゆう (3回)-(2019/11/21(Thu) 20:33:22)

分類:[ASP.NET (VB)] 

環境 asp.net  vb.net

gridview上に任意のボタンを配置し、そのボタンをクリックしたら、その行の店舗のデータを削除するというシステムを作っています。
削除する前に
OnclientClientClick="return confirm('本当に削除していいですか?')"
というメッセージを表示させ、OKをクリック後にその店舗のデータを削除するイベントを作り、正しく動作しています。

やりたいことは、return confirm ('本当に削除してもいいですか?')のメッセージの中に、該当の行にある店舗の名前を加え、
return confirm ('○○店のデータを本当に削除してもいいですか?')としたいですが、そもそもそんなことが出来るのかが分かりません。

他の方法で試してみましたが、gridview上のボタンでメッセージを出すにはやはり return confirm でするのが一般的なやり方の様で、
他のやり方が思いつきません。上記のようにreturn confirm ('○○店のデータを本当に削除してもいいですか?')でできたらいいのですが。。

どなたかご教授いただければ幸いです。よろしくお願いいたします。
引用返信 編集キー/
■93123 / inTopicNo.2)  Re[1]: gridview return confirm について
□投稿者/ WebSurfer (1972回)-(2019/11/21(Thu) 21:31:36)
No93122 (ゆう さん) に返信

開発環境(OS, .NET, Visual Studio のバージョン、DB は何かとそのエディション・
バージョン)を書いてください。

> やりたいことは、return confirm ('本当に削除してもいいですか?')のメッセージの中に、該当の行にある店舗の名前を加え、
> return confirm ('○○店のデータを本当に削除してもいいですか?')としたいですが、


GridView に表示するデータは DB のあるテーブルから SqlDataSource などを使って取
得していると想像していますが(想像が違ったらどう違うか書いてください)、取得する
レコードの中に「○○店」のデータは含まれるのでしょうか?

引用返信 編集キー/
■93129 / inTopicNo.3)  Re[2]: gridview return confirm について
□投稿者/ ゆう (5回)-(2019/11/22(Fri) 12:17:03)
No93123 (WebSurfer さん) に返信

返信ありがとうございます。

> 開発環境(OS, .NET, Visual Studio のバージョン、DB は何かとそのエディション・
> バージョン)を書いてください。

失礼しました。
win10、.NET framework4.0、visual studio2017、S I Object Browser for Olacie Ver.12.1.3.0
です。足りなかったらごめんなさい‥。

> GridView に表示するデータは DB のあるテーブルから SqlDataSource などを使って取
> 得していると想像していますが(想像が違ったらどう違うか書いてください)、

その通りです。SqlDataSourceで取ってきています。

>取得するレコードの中に「○○店」のデータは含まれるのでしょうか?

はい、含まれています。表の1行目が「店舗名」で、数十店舗のデータが一覧でのっています。
引用返信 編集キー/
■93131 / inTopicNo.4)  Re[1]: gridview return confirm について
□投稿者/ 大谷刑部 (63回)-(2019/11/22(Fri) 13:00:55)
No93122 (ゆう さん) に返信
> 環境 asp.net  vb.net
>
> gridview上に任意のボタンを配置し、そのボタンをクリックしたら、その行の店舗のデータを削除するというシステムを作っています。
> 削除する前に
> OnclientClientClick="return confirm('本当に削除していいですか?')"
> というメッセージを表示させ、OKをクリック後にその店舗のデータを削除するイベントを作り、正しく動作しています。
>
> やりたいことは、return confirm ('本当に削除してもいいですか?')のメッセージの中に、該当の行にある店舗の名前を加え、
> return confirm ('○○店のデータを本当に削除してもいいですか?')としたいですが、そもそもそんなことが出来るのかが分かりません。

↓内容思いっ切り以下のケースと被ってる気がしますけど。
https://www.atmarkit.co.jp/fdotnet/dotnettips/104confirmdg/confirmdg.html

C#をVBの構文に読み替えて、イベントハンドラー内で名称取得してconfirmに変数で文言渡せばいいのでは?


引用返信 編集キー/
■93132 / inTopicNo.5)  Re[3]: gridview return confirm について
□投稿者/ WebSurfer (1973回)-(2019/11/22(Fri) 13:20:08)
No93129 (ゆう さん) に返信

> >取得するレコードの中に「○○店」のデータは含まれるのでしょうか?
>
> はい、含まれています。表の1行目が「店舗名」で、数十店舗のデータが一覧でのっています。

そうであれば、[削除]ボタン(Button または LinkButton と理解してます)の OnClientClick 
プロパティにデータバインド式で「○○店」のデータを設定してやればやりたいことはできると思
います。以下の記事を参考にしてください。

データバインド式
http://surferonwww.info/BlogEngine/post/2010/08/17/Data-bind-method.aspx

具体的には、例えば、SqlDataSource の SelectCommad が以下のようになっていて、その中の name 
が「○○店」に該当するとすると、

SelectCommand="SELECT [id], [name], ... FROM [Table]"

データバインド式 Eval("name") でその行の「○○店」が取得できます。

.aspx 側でスクリプトの文字列を組み立てるのはうまくいかないので、上に紹介した記事に書いた
ように、コードビハインド側で以下のメソッドを追加して(コードは C# です)、それでスクリプ
トの文字列を組み立てて、

protected string Confirmation(string name)
{
    return string.Format("return confirm('{0} を削除して良いですか?');", name);
}

.aspx 側では以下のように OnClientClick プロパティに設定してください。(LinkButton を
使っていると想像していますが、Button でも同じ)

<ItemTemplate>
    ・・・中略・・・
    <asp:LinkButton ID="LinkButton2" runat="server" 
        CausesValidation="False" CommandName="Delete" Text="削除" 
        OnClientClick='<%#Confirmation((string)Eval("name"))%>'
    </asp:LinkButton>
</ItemTemplate>

引用返信 編集キー/
■93133 / inTopicNo.6)  Re[3]: gridview return confirm について
□投稿者/ WebSurfer (1974回)-(2019/11/22(Fri) 13:35:26)
No93129 (ゆう さん) に返信

私のレス No93132 コードで > が一つ抜けてました。すみません。

誤: OnClientClick='<%#Confirmation((string)Eval("name"))%>'

正: OnClientClick='<%#Confirmation((string)Eval("name"))%>'>
引用返信 編集キー/
■93172 / inTopicNo.7)  Re[2]: gridview return confirm について
□投稿者/ ゆう (7回)-(2019/11/25(Mon) 21:04:58)
No93131 (大谷刑部 さん) に返信

返信ありがとうございます。そのサイトは既に拝見しておりますが、知りたいことはそれでは分かりませんでした。
ご助言ありがとうございます。
引用返信 編集キー/
■93173 / inTopicNo.8)  Re[3]: gridview return confirm について
□投稿者/ ゆう (8回)-(2019/11/25(Mon) 21:26:11)
No93132 (WebSurfer さん) に返信

ご丁寧な返信ありがとうございます。遅くなりまして申し訳ありません。
書いて頂いたソースを元に色々と試しており、まだできていませんが、近づくことはできていると思います。


>コードビハインド側で以下のメソッドを追加して

以下のようにしました。

Public Function CreateConfirmation (ByVal name As string) As string
Return string.Format("name","return confirm ('のデータを削除していいですか?');")
End Function



><ItemTemplate>
> ・・・中略・・・
> <asp:LinkButton ID="LinkButton2" runat="server"
> CausesValidation="False" CommandName="Delete" Text="削除"
> OnClientClick='<%#Confirmation((string)Eval("name"))%>'
> </asp:LinkButton>
></ItemTemplate>

以下のようにしました。


<ItemTemplate>
・・・中略・・・
<asp:Button ID="Button1" runat="server"
CausesValidation="False" CommandName="Delete" Text="削除"
OnClientClick='<%#CreateConfirmation (Eval(container.DataItem,"name"))%>'
</asp:Button>
</ItemTemplate>


これでは「DataRowViewからStringへの変換は無効です」となってしまいます。
DataRowViewからStringへの変換の方法、もしくはソースで間違いのご指摘があれば、
教えて頂きたいです。
引用返信 編集キー/
■93175 / inTopicNo.9)  Re[4]: gridview return confirm について
□投稿者/ WebSurfer (1977回)-(2019/11/25(Mon) 22:22:18)
No93173 (ゆう さん) に返信

C# が分からななら変換サービスがありますので使ってみてください。

Telerik Cide Conveter
http://converter.telerik.com/

> OnClientClick='<%#CreateConfirmation (Eval(container.DataItem,"name"))%>'

キャストを VB.NET ではどうすればよいかを勉強してください。
引用返信 編集キー/
■93181 / inTopicNo.10)  Re[4]: gridview return confirm について
□投稿者/ 大谷刑部 (64回)-(2019/11/26(Tue) 09:50:06)
No93173 (ゆう さん) に返信
> <ItemTemplate>
> ・・・中略・・・
> <asp:Button ID="Button1" runat="server"
> CausesValidation="False" CommandName="Delete" Text="削除"
> OnClientClick='<%#CreateConfirmation (Eval(container.DataItem,"name"))%>'
> </asp:Button>
> </ItemTemplate>
>
>
> これでは「DataRowViewからStringへの変換は無効です」となってしまいます。
> DataRowViewからStringへの変換の方法、もしくはソースで間違いのご指摘があれば、
> 教えて頂きたいです。

↓以下を読んでみたら?
https://www.atmarkit.co.jp/fdotnet/dotnettips/060eval/eval.html
引用返信 編集キー/
■93184 / inTopicNo.11)  Re[4]: gridview return confirm について
□投稿者/ WebSurfer (1978回)-(2019/11/26(Tue) 14:02:06)
No93173 (ゆう さん) に返信

私が No93175 に書いたことでは解決にたどり着けなかったでしょうか?

そもそも質問者さんは VB.NET でコードを書くスキルは十分お持ちなのですか? そうでない
とすると、説明しても何ともならないかもしれませんが、乗り掛かった舟ということでもう少
し詳しく書いておきます。


まず No93132 で書いた C# の Confirmation メソッドのコードは以下の通りですが、

protected string Confirmation(string name)
{
    return string.Format("return confirm('{0} を削除して良いですか?');", name);
}

それを No93175 で紹介した変換サービスで VB.NET のコードに変換すると、

Protected Function Confirmation(ByVal name As String) As String
    Return String.Format("return confirm('{0} を削除して良いですか?');", name)
End Function

となるので、それをそのまま質問者さんのコードにコピペすれば良いです。

次に、LinkButton の OnClientClick プロパティにデータバインド式で設定する Confirmation 
メソッドですが、その引数は String 型なので Eval("name") を String 型にキャストする必要
があります。

C# のコードでは以下のように (string) を使ってキャストしています。

OnClientClick='<%#Confirmation((string)Eval("name"))%>'

VB.NET ではキャストに CType を使って以下のようにします。

OnClientClick='<%#Confirmation(CType(Eval("name"), String))%>'

ただ、VB.NET の場合はデフォルトで Option Strict Off なのでキャストしなくても、

OnClientClick='<%#Confirmation(Eval("name"))%>'

として VB.NET が勝手に変換してくれるかも(未検証・未確認ですが)。

引用返信 編集キー/
■93187 / inTopicNo.12)  Re[5]: gridview return confirm について
□投稿者/ ゆう (9回)-(2019/11/26(Tue) 21:19:20)
ご回答いただきありがとうございました。
WebSurfer様のやり方で、想定していたものができました。
仕事で突然の異動、知識ゼロでこのシステムを作っているので、初歩的な質問になりました。
ありがとうございました。
解決済み
引用返信 編集キー/
■93188 / inTopicNo.13)  Re[6]: gridview return confirm について
□投稿者/ WebSurfer (1979回)-(2019/11/26(Tue) 21:38:21)
No93187 (ゆう さん) に返信

> 仕事で突然の異動、知識ゼロでこのシステムを作っているので、初歩的な質問になりました。

仕事でやってるなら上司・先輩に聞くべくです。

業務上の問題・課題の質問をここのような Q&A サイトで聞くなんておかしと思いませんか?

もし組織内で聞けなくて、Q&A サイトで質問せざるを得ないという環境にあるのなら、それは組織
として問題があると言わざるを得ません。

行美であれば、当然、製品品質にかかわるはずですが、その組織は必要な力量を持つ要員をアサイ
ンしてない、すなわち組織として製品品質を担保できていないということになるのでは?
引用返信 編集キー/
■93194 / inTopicNo.14)  Re[7]: gridview return confirm について
□投稿者/ 大谷刑部 (66回)-(2019/11/27(Wed) 09:46:18)
No93188 (WebSurfer さん) に返信
> ■No93187 (ゆう さん) に返信
>
>>仕事で突然の異動、知識ゼロでこのシステムを作っているので、初歩的な質問になりました。
>
> 仕事でやってるなら上司・先輩に聞くべくです。

でたよ。主観の押し付け。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ