OnClientClick не срабатывает при первом постбэке, но при втором клике

Хорошо, у меня есть сетка, которая позволяет пользователям удалять строки, когда пользователь нажимает кнопку "Удалить ссылку", происходит обратная передача. Я получаю индекс строки, по которой запускается кнопка, которая затем вызывает хранимую процедуру, которая получает счет. Но перед удалением строки появится подтверждение. Проблема в том, что пользователь должен дважды нажать кнопку Удалить ссылку, прежде чем появится диалоговое окно подтверждения. Заранее спасибо за ваш код помощи ниже.

<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)
            {

            }
}

1 ответ

Событие OnClientClick должно быть уже подключено, а javascript доступен в тот момент, когда пользователь нажимает кнопку удаления, например, в Page_Load. Эта ссылка (MSDN) может помочь вам с концепцией жизненного цикла страницы, а эта ссылка (MSDN) поможет объяснить, как зарегистрировать ваш скрипт.

Другие вопросы по тегам