1

以下の私のコードは、「続行」ボタンがクリックされたときにtrueの値を送信しないことを除いて、正常に機能しています。

<script type="text/javascript">
    function EmpDelete(f_name) {
        $("#fName").text(f_name);
        $('#dialog').dialog({            
            title: "Delete Employee?",            
            modal: true,
            width: 500,
            height: 250,            
            buttons: {
                "Cancel": function () {
                    $(this).dialog("close");
                },
                "Continue": function () {                    
                    $(this).dialog("close");
                    // return true;
                }                
            }            
        });                        
        return false;
    };    
</script>

imgDelete ImageButton がクリックされると、上記の jQuery イベントが呼び出されます。

e.Row.Cells[iDelete].Controls.Add
    (new ImageButton
    {
        ImageUrl = "Images/database_delete.png",
        CommandArgument = e.Row.RowIndex.ToString(),
        CommandName = "Delete",
        ID = "imgDelete",
        CssClass = "imgDelete",                 
        OnClientClick = "return EmpDelete('" + e.Row.Cells[iFNmae].Text + "');",    
        ClientIDMode = System.Web.UI.ClientIDMode.Static
    });

「RowCommend」イベントがさらに処理できるように、jQuery の「続行」ボタンが true の値を返すようにするにはどうすればよいですか?

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Delete")
    {

    } 
}
4

3 に答える 3

1

これと似たようなことをしたことに気づき、コードを振り返って、他の回答で言及した2番目の「引数」パラメーターを使用しなかった理由を確認しました。

私の場合、GridView の代わりに Repeater を使用しました。各行のボタンは、jQuery UI ダイアログのポップアップをトリガーしました。ただし、複数の行があったとしても、jQuery UI ダイアログは 1 つしかありませんでした。その内容は、どの行のボタンが押されたかに基づいて変更されました。私のダイアログ ボックスにはフォーム フィールドがあったので、ダイアログ ボタンが押されたときに、GetPostBackEventReference() メソッドによって生成された JavaScript 関数を呼び出します。ダイアログ ボックスのフォームのフィールドが送信されたので、引数を指定する必要はありませんでした。

私のポイントは、あなたの場合、他の回答で言及した2番目の「引数」パラメーターを使用する代わりに、おそらくダイアログボックスに HiddenField を作成できるということです。ダイアログ ボックスでフォーム フィールドを送信している場合は、RowCommand イベント ハンドラーでその HiddenField をキャプチャできます。PostBack を開始する前に、その値を True に設定するだけです。あなたの場合、どの従業員を削除する必要があるかを特定するための非表示フィールドも必要であると想定しています (何らかのタイプの EmployeeID 値)。

于 2013-05-16T16:34:45.207 に答える
0

__doPostBack(uniqueID, '');jQueryの「続行」ボタンを使用して解決しました

追加した Page_Load() イベントで

 if (!Page.IsPostBack)
    {
        ClientScript.GetPostBackEventReference(gvEmployee, string.Empty);
    }

そして、Gridview_RowDataBound イベントで jQuery ダイアログを呼び出しました

e.Row.Cells[iDelete].Controls.Add
            (new ImageButton
            {
                ImageUrl = "Images/database_delete.png",
                CommandArgument = e.Row.RowIndex.ToString(),
                CommandName = "Delete",
                ID = "imgEmpDelete" + e.Row.Cells[iID].Text,
                **OnClientClick = "javascript:return rowAction(this.name)",**
                ClientIDMode = System.Web.UI.ClientIDMode.Static
            });

それが誰にも役立つことを願っています。

于 2013-05-17T23:45:29.920 に答える