RadConfirmダイアログで[OK]をクリックすると発生するJavaScript関数を記述しました。これは、サーバーへのJavaScriptコールバックをトリガーして、データベースからレコードを削除することになっています。これは最高のアーキテクチャではないかもしれませんが(私は目標を達成するための他の方法を考えることができます)、私はこれを学習の練習として苦労させようとしています。以下はこれまでに書いたコードです。私はそれのほとんどが正しいことを得たと思う。PageMethod経由でサーバーサイドメソッドを呼び出す
このJavaScript関数:
function confirmCallBackFn(arg) {
if (arg == true) {
PageMethods.RemovePackagePageMethod();
}
else {
}
}
は、サーバー上で、次のWebメソッドを呼び出す必要があります。
順番に次のメソッドを実行する必要があり[WebMethod()]
public static void RemovePackagePageMethod(object sender, EventArgs e)
{
Inventory inv = new Inventory();
inv.RemovePackage();
}
:
private void RemovePackage()
{
SBMData2.SBMDataContext db = new SBMData2.SBMDataContext();
var boxes = from p in db.Packages
where p.PackageID == Convert.ToInt32(RadGrid1.SelectedValues["PackageID"].ToString())
select p;
foreach (var box in boxes)
{
db.Packages.DeleteOnSubmit(box);
}
try
{
db.SubmitChanges();
RadGrid1.Rebind();
}
catch (Exception ex)
{
RadWindowManager1.RadAlert("System error deleting package", 200, 200, "exception", null);
}
}
すべてがよさそうですこのサイトで読んだ投稿と一貫しているようです他のPageMethodを使用してサーバー上のコードを起動する方法について説明します。しかし、それは最終的な方法(私が単独でテストした)で削除を実行することに失敗しています。誰かが私が間違っていた場所にスポットできますか?
ありがとうございます。私はこれを撃つだろう。戻ってください... – hughesdan
あなたは正しいです。ありがとうございました。 +1は、Webメソッドがページクラスのインスタンスを持たないことを理解するのに役立ちます。私はRadAlertをクライアント側にも再配置する必要があると思います。 – hughesdan