OnClientClick не срабатывает при первом постбэке, но при втором клике - PullRequest
0 голосов
/ 23 февраля 2012

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

<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 Ответ

0 голосов
/ 23 февраля 2012

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

...