Как удалить записи в asp.net, используя ajax - PullRequest
0 голосов
/ 22 января 2019

Я перечисляю страницу с контентом из базы данных.Я хотел бы добавить функцию удаления к нему.Я использую заполнитель asp для размещения данных на странице.Также я использую номер телефона в качестве первичного ключа. Я пытался его найти.Но у меня ничего не получалось.Также будет здорово, если мы сможем использовать delete с помощью ajax.

Это страница тестовых рецептов, использующая asp.net с использованием C # и SQL Server.

protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                //Populating a DataTable from database.
                DataTable dt = this.GetData();

                //Building an HTML string.
                StringBuilder html = new StringBuilder();

                //div structure
                html.Append("<div class='container contest-wrapper'>");
                //dynamic divs
                int row_count = dt.Rows.Count;
                html.Append("<div class='col-md-12'>");
                html.Append("<p>Total Entries:" + row_count + "</p>");
                html.Append("</div>");
                foreach (DataRow row in dt.Rows)
                {

                    html.Append("<div class='col-md-6 main-container'>");
                    html.Append("<div class='single-contest'>");
                    html.Append("<div class='collapse methodDiv' id='" + row["PhNo"].ToString() + "'><p>" + row["DishMethod"].ToString() + "</p></div>");
                    html.Append("<img class='img-responsive contest-img' src='" + row["DishImg"].ToString() + "'>");
                    //html.Append("<a runat='server' id='" + row["PhNo"].ToString()+ "' onserverclick='Delete(" + row["PhNo"].ToString() + ")' >Delete</a>");
                    //html.Append("<input type='hidden' runat='server' name='hdnPhNo' value='" + row["PhNo"].ToString() + "' />");
                    //html.Append("<input runat='server' OnClick='Delete(" + row["PhNo"].ToString() + ")' type='submit' name='buttonDelete' value='Delete Entry' />");
                    //html.Append("<button ID='delete' runat='server' Text='Delete' OnClick='delete(" + row["PhNo"].ToString() + ")'>Delete</button>");
                    html.Append("<p><b>Dish Name: </b>");
                    html.Append(row["DishName"].ToString());
                    html.Append("</p>");
                    html.Append("<p><b>Uploaded By: </b>");
                    html.Append(row["UserName"].ToString());
                    html.Append("</p>");
                    html.Append("<p><b>Email: </b>");
                    html.Append(row["Email"].ToString());
                    html.Append("</p>");
                    html.Append("<p><b>Phone Number: </b>");
                    html.Append(row["PhNo"].ToString());
                    html.Append("</p>");
                    //html.Append("<p><b>Dish Method: </b>");
                    //html.Append(row["DishMethod"].ToString());
                    //html.Append("</p>");
                    html.Append("<button type='button' class='method-btn' data-toggle='collapse'  onclick='setColor(event)'; data-count='1'  data-target='#"+ row["PhNo"].ToString() + "'>Method</button>");
                    html.Append("</div>");
                    html.Append("</div>");
                }
                //dynamic divs
                html.Append("</div>");
                //div structure

                //Append the HTML string to Placeholder.
                PlaceHolder1.Controls.Add(new Literal { Text = html.ToString() });
            }
        }
        private DataTable GetData()
        {
            string constr = ConfigurationManager.ConnectionStrings["RecipeDataModel"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand("SELECT * FROM RecipeContest"))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter())
                    {
                        cmd.Connection = con;
                        sda.SelectCommand = cmd;
                        using (DataTable dt = new DataTable())
                        {
                            sda.Fill(dt);
                            return dt;
                        }
                    }
                }
            }
        }
        public void delete(object sender, EventArgs e, int phNo)
        {
            //string phNo = hdnPhNo.Value;
            //string phNo = Request["hdnPhNo"];
            string connString = ConfigurationManager.ConnectionStrings["RecipeDataModel"].ConnectionString;
            SqlConnection conn = null;
            conn = new SqlConnection(connString);
            conn.Open(); SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "DELETE FROM RecipeContest WHERE PhNo='" + phNo + "'";
            cmd.Connection = conn;
            int numberDeleted = cmd.ExecuteNonQuery();
            //Display success message.
            string message = "Your details have been deleted successfully.";
            string script = "window.onload = function(){ alert('";
            script += message;
            script += "')};";
            ClientScript.RegisterStartupScript(this.GetType(), "SuccessMessage", script, true);
        }

Я хочу получить одну запись для удаления после нажатия на соответствующую кнопку удаления.Если AJax может быть реализован, это было бы здорово.

1 Ответ

0 голосов
/ 22 января 2019

Склонность к инъекции SQL

cmd.CommandText = "DELETE FROM RecipeContest WHERE PhNo='" + phNo + "'";

всегда использовать параметр, пример будет

cmd.CommandText =”Delete From RecipeContest where PhNo=@phno” 
cmd.Parameter.AddWithValue(“@phno”,phno);

или вы можете сделать это так же для вышеприведенной строки cmd.Parameters ["@ phno"]. Value = phNo; остальное выглядит хорошо со мной, если вы хотите удалить по телефонным номерам, я предлагаю использовать идентификатор записи. Вот ссылка для удаления SQL https://www.w3schools.com/sql/sql_delete.asp

...