Gridview удалить строку - PullRequest
       5

Gridview удалить строку

1 голос
/ 16 февраля 2012

Когда я нажимаю на кнопку удаления, она не вызывает функцию удаления. кто-нибудь может мне помочь?

protected void GridViewQuestion_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton lb = (ImageButton)e.Row.FindControl("ImageButtonDelete");

                lb.Attributes.Add("onclick", "javascript:return " +
                     "confirm('Are you sure you want to delete this record " +
                     DataBinder.Eval(e.Row.DataItem, "question") + "')");
            }
        }

        protected void GridViewQuestion_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            int questionID = (int)GridViewQuestion.DataKeys[e.RowIndex].Value;

            TopicEntity.deleteQuestion(questionID);

            BindGridData();
        }

public bool deleteQuestion(int QuestionID)
        {
            SqlConnection dbConnection = new SqlConnection(connectionString);

            SqlCommand dbCommand = new SqlCommand();
            dbCommand.CommandText = "DELETE FROM Question QuestionID=@QuestionID";
            dbCommand.Connection = dbConnection;
            dbCommand.Parameters.AddWithValue("@QuestionID", QuestionID);

            bool deleteSuccess = false;

            try
            {
                dbConnection.Open();
                dbCommand.ExecuteNonQuery();
                deleteSuccess = true;
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                dbConnection.Close();
            }
            return deleteSuccess;
        }

Ответы [ 3 ]

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

Если проблема в том, что событие Delete не срабатывает при нажатии кнопки ImageButton, то вы забыли добавить CommandName="Delete" в разметку вашего ImgaButton.Также убедитесь, что ваш GridView bind на Page_Load делает это внутри if(!IsPostBack)

0 голосов
/ 03 мая 2013

Попробуй так:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Delete")
    {
        int imageID = Convert.ToInt32(e.CommandArgument);
        string constring = @"Server=User-PC\SQLEXPRESS;initial catalog=Student;Integrated Security=true";
        SqlConnection conn = new SqlConnection(constring);
        conn.Open();
        string query="Delete from [student].[dbo].[ImageTable] where ID=" +imageID;
        SqlCommand cmd = new SqlCommand(query, conn);
        cmd.ExecuteNonQuery();
        this.LoadGrid();
        conn.Close();

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

Как выглядит ваша разметка? У вас должно быть что-то похожее на это для вашего GridView:

<asp:GridView OnRowDeleted="GridViewQuestion_RowDeleting" />

Или, по имени метода, вы можете использовать OnRowDeleting:

<asp:GridView OnRowDeleting="GridViewQuestion_RowDeleting" />

EDIT

Ошибка в вашем операторе SQL. Должно быть так:

dbCommand.CommandText = "DELETE FROM Question where QuestionID=@QuestionID";

Вам не хватает ключевого слова WHERE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...