1

データグリッドに多数のアイテムをリストするページがあります。

各アイテムには対応する がありremove link button、リストからアイテムを削除します。項目が削除されるイベント ハンドラーで、項目がリストの最後の項目であるかどうかを確認します。それが最後のアイテムである場合、私は削除を行いませんが、アイテムを削除できないことをユーザーに通知する警告ボックスを送信します。C# でこのアラート ボックスをトリガーする方法がわかりません。

私のコードは次のようになります。

私のaspxには、さまざまなリンクボタンを備えたデータグリッドがあります。示されているコードのスニペット:

<ItemTemplate>
    <asp:LinkButton runat="server" ID="Remove"
                OnCommand="lnkRemove_Command" CommandArgument='<%# Eval("Id") %>
                OnClientClick="return false;">
    </asp:LinkButton>
</ItemTemplate>

私のコード ビハインドでは、イベント ハンドラーは次のようになります。

   private List<MyItem> _items;

   protected void lnkRemove_Command(object sender, CommandEventArgs e)
   {
      int ID = Convert.ToInt32(e.CommandArgument);
      MyItem item = MyItem.GetItemByID(id); //This gets the item cooresponding to the ID
      if (_items.Count != 1) 
      {
          //code to delete item   
      }
      else
      {
           //Generate an alert box to tell the user that this item cannot be deleted.
           //I have tried the following two lines of commented code, which didn't work for me
           //Response.Write(@"<script language='javascript'>alert('HERE');</script>");
           //Page.ClientScript.RegisterStartupScript(this.GetType(), "hwa", "alert('Hello World');", true);

      }
   }

さらに、私のPage_Loadでは、すでにContext.RegisterResource(this, StyleSheet, Script). つまり、MyFile.js のこのページの他の機能のこのコードに対応する JavaScript と CSS を使用しています。

可能であれば、さまざまな OnClientClicks などによってトリガーされる js 関数が既にある MyFile.js に JS 関数を作成したいと思います...

次のようなことは可能ですか?

in MyFile.js

var GetAlertMessage = function()
{
    alert("Can't delete this item");
}

上記のC#関数でこの関数を呼び出しますか?

助けてくれてありがとう。

4

1 に答える 1

2

これは、他の検証ルーチンと同じように扱う必要があります。クライアント側の検証機能とサーバー側の検証機能が必要です。

クライアント側の検証

削除可能なアイテムごとに、 and を追加しonclick="ValidateDeletion();"ますclass="deleteable-item"

function ValidateDeletion()
{
    var itemCount = $(".deleteable-item").length;
    if(itemCount == 1)
    {
        alert("Sorry, you cant delete this item.")
        return false;
    }
    else
    {
        //let it pass through
    }

}
于 2012-11-16T17:27:32.680 に答える