2012-02-23 18 views
0

これは、ユーザーが行を削除できるグリッドビューです。ボタンが発生した行のインデックスが取得され、カウントが取得されるストアドプロシージャが呼び出されます。行が削除される前に確認が表示されます。問題は、確認ダイアログボックスが表示される前にユーザーがリンクの削除ボタンを2回クリックしなければならないことです。あなたの助けのコードをあらかじめありがとうございます。OnClientClickは最初のポストバックでは発生しませんが、2回目のクリックで表示されます

<asp:GridView ID="updtCompGrdVw" runat="server" 
       AutoGenerateColumns="False" 
       DataKeyNames = "GUID" 
       OnRowCancelingEdit="updtCompGrdVw_RowCancelingEdit" 
       OnRowEditing="updtCompGrdVw_RowEditing" 
       OnRowUpdating="updtCompGrdVw_RowUpdating" 
       OnRowDeleting="updtCompGrdVw_RowDeleting" 
<RowStyle BackColor="White" /> 
    <EmptyDataRowStyle Wrap="False" /> 
    <Columns> 
    <asp:CommandField ShowDeleteButton="true" HeaderText="Delete" CausesValidation="false"> 
      <HeaderStyle ForeColor="White" /> 
      <ItemStyle HorizontalAlign="left" VerticalAlign="Top" Width="40px" Font-Bold="True" Font-Size="Small"/> 
       </asp:CommandField> 
</Columns> 
</asp:GridView> 

protected void updtCompGrdVw_RowDeleting(Object sender, GridViewDeleteEventArgs e) 
     { 
      try 
      { 
      int index = Convert.ToInt32(e.RowIndex); 
      DataKey dtKey = updtCompGrdVw.DataKeys[index]; 
      string DKpif_id = dtKey.Values["GUID"].ToString();// +", " + dtKey.Values["itmID"].ToString(); 
      GridViewRow Row = updtCompGrdVw.Rows[index]; 
      conn.Close(); 
      SqlCommand cmd3 = new SqlCommand("StoreProcedureName", conn); 
      cmd3.CommandType = CommandType.StoredProcedure; 
      cmd3.Parameters.Add("@GUID", SqlDbType.NVarChar); 
      cmd3.Parameters["@GUID"].Value = DKpif_id; 
      conn.Open(); 
      SqlDataAdapter adapter = new SqlDataAdapter(); 
      DataSet ds = new DataSet(); 
      adapter.SelectCommand = cmd3; 
      adapter.Fill(ds); 
      if (ds.Tables.Count > 0) 
      { 
       Session["CntctCount"] = ds.Tables[0].Rows[0]["ContactsCount"].ToString(); 

        (Row.Cells[Row.Cells.Count - 1].Controls[0] as LinkButton).OnClientClick = "if (!confirm('There are (" + Session["CntctCount"].ToString() + ") contacts associated with this company!, Are you sure you want to Delete this company?')) { return false; }"; 

        ds.Clear(); 
       conn.Close(); 
      } 
} 
      catch (SqlException ex) 
      { 

      } 
} 

答えて

0

OnClientClickイベントはすでに配線され、ユーザが削除ボタンをクリックした時点ではJavaScriptが利用可能にする必要があります - をPage_Loadで、例えば。 This link (MSDN)はページライフサイクルの概念に役立ちます。this link (MSDN)は、スクリプトの登録方法を説明するのに役立ちます。

関連する問題