Как создать событие onserverclick, уже созданное в фоновой HTML-таблице и div в ASP.NET - PullRequest
0 голосов
/ 16 мая 2019

Я создал таблицу HTML в коде позади (ASP-C #), используя теги HTML для извлечения данных из базы данных.Работает нормально.Затем я добавил новый столбец для кнопки редактирования и кнопки удаления, используя теги HTML таким же образом.

Аналогичным образом я создал панель div для извлечения данных из базы данных (эта панель используется для проверки доступности автомобиля).Используя данные цикла while, получить этот div.У него также есть кнопка с именем book.

Теперь я хочу создать событие onserverckick для этих кнопок.И получить выбранный идентификатор в каждой строке.Поскольку я хочу сделать заказ в соответствии с выбранным идентификатором.

Я пробовал несколько способов, но не смог найти решение этой проблемы.

HTML Table Code

protected void Page_Load(object sender, EventArgs e)
        {

            if (!Page.IsPostBack)
            {
                //Create Database Connection
                SqlConnection con = new SqlConnection("Data Source= LAPTOP-J70EHC58 ; Initial Catalog= Bus_Management_System ; Integrated Security = True ; Connect Timeout = 30 ; ");
                con.Open();

                //Retrieve package details
                string sqlst = "SELECT * FROM Package ";
                SqlCommand cmd = new SqlCommand(sqlst, con);
                
                StringBuilder table = new StringBuilder();
                SqlDataReader dr = cmd.ExecuteReader();
                
                //Create Table
                table.Append("<table id='datatable-buttons' class='table table-striped table-bordered'>");                
                table.Append("<thead>");
                table.Append("<tr>");
                table.Append("<th>Package ID</th>");
                table.Append("<th>Package Name</th>");
                table.Append("<th>Rate Per KM (Rs.) </th>");
                table.Append("<th>Rate Per Additional Day (Rs.) </th>");
                table.Append("<th>Advanced_Per_KM (Rs.) </th>");
                table.Append("<th>Action</th>");
                table.Append("</tr>");
                table.Append("</thead>");

                table.Append("<tbody>");

                if (dr.HasRows)
                {
                    while(dr.Read())
                    {
                        //display package details
                        table.Append("<tr>");
                        table.Append("<td>" + dr[0] + "</td>");
                        table.Append("<td>" + dr[1] + "</td>");
                        table.Append("<td>" + dr[2] + "</td>");
                        table.Append("<td>" + dr[3] + "</td>");
                        table.Append("<td>" + dr[4] + "</td>");
                        table.Append("<td><center><button id='btnEdit' class='btn btn-round btn-info btn-xs' runat='server' onserverclick='btnEdit_ServerClick' >Edit</button><button id='btnDelete' class='btn btn-round btn-danger btn-xs' runat='server' >Delete</button></center></td>");
                        table.Append("</tr>");

                    }
                }

                table.Append("</tbody>");
                table.Append("</table>");
                
                pnlTable.Controls.Add(new Literal { Text = table.ToString() });

                con.Close();

            }

HTML-код Div

protected void btnCheckAvailability_Click(object sender, EventArgs e)
        {
            try
            {
                //Create Database Connection
                SqlConnection con = new SqlConnection("Data Source= LAPTOP-J70EHC58 ; Initial Catalog= Bus_Management_System ; Integrated Security = True ; Connect Timeout = 30 ; ");
                con.Open();

                StringBuilder table = new StringBuilder();

                //string sqlst3 = " SELECT Route_Name FROM Route WHERE (SELECT Route_ID FROM Bus WHERE Status = 'Available' AND Package_ID = (SELECT Package_ID FROM Package WHERE Package_Name = '" + txtBusPackageName.Value + "')) = Route.Route_ID ";
                //SqlCommand cmd3 = new SqlCommand(sqlst3, con);
                //string routeName = Convert.ToString(cmd3.ExecuteScalar());

                //string sqlst4 = " SELECT First_Name FROM Employee WHERE (SELECT Owner_ID FROM Bus WHERE Status = 'Available' AND Package_ID = (SELECT Package_ID FROM Package WHERE Package_Name = '" + txtBusPackageName.Value + "')) = Employee.Employee_ID AND Employee.Position = 'Owner'  ";
                //SqlCommand cmd4 = new SqlCommand(sqlst4, con);
                //string ownerName = Convert.ToString(cmd4.ExecuteScalar());


                //Retrieve package details
                string sqlst2 = "SELECT * FROM Bus WHERE Status = 'Available' AND Package_ID = (SELECT Package_ID FROM Package WHERE Package_Name = '" + txtBusPackageName.Value + "') ";
                SqlCommand cmd2 = new SqlCommand(sqlst2, con);
                SqlDataReader dr = cmd2.ExecuteReader();


                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                       
                        //display package details
                        table.Append("<div class='col-md-4  profile_details'>");
                        table.Append("<div class='well profile_view'>");
                        table.Append("<div class='col-sm-12'>");
                        table.Append("<h4 class='brief green'><i>" + dr[6] + "</i></h4>");
                        table.Append("<div class='left col-xs-7'>");
                        table.Append("<h2>" + dr[1] + " - " + dr[0] + "</h2>");
                        table.Append("<p><strong>Total Seats: </strong>" + dr[3] + "</p>");
                        table.Append("<ul class='list-unstyled'>");
                        table.Append("<li>Package Name: " + txtBusPackageName.Value + " </li>");
                        table.Append("<li>Bus Type: " + dr[4] + " </li>");
                        table.Append("<li>Bus Owner: " + dr[8] + " </li>");
                        table.Append("</ul>");
                        table.Append("</div>");
                        table.Append("<div class='right col-xs-5 text-center'>");
                        table.Append("<img src='images/bus1.jpg' style='width: 106px; height: 112px; ' class='img-circle img-responsive'>");
                        table.Append("</div>");
                        table.Append("</div>");
                        table.Append("<div class='col-xs-12 bottom text-center'>");
                        table.Append("<div class='col-xs-12 col-sm-6 emphasis'>");
                        table.Append("<p class='ratings'>");
                        table.Append("<a>4.0</a>");
                        table.Append(" <a href=''><span class='fa fa-star'></span></a>");
                        table.Append(" <a href=''><span class='fa fa-star'></span></a>");
                        table.Append(" <a href=''><span class='fa fa-star'></span></a>");
                        table.Append(" <a href=''><span class='fa fa-star'></span></a>");
                        table.Append(" <a href=''><span class='fa fa-star-0'></span></a>");
                        table.Append("</p>");
                        table.Append("</div>");
                        table.Append("<div class='col-xs-12 col-sm-6 emphasis'>");
                        table.Append("<button type='button' class='btn btn-danger btn-xs btn-round pull-right'>Book Now</button>");
                        table.Append("</div>");
                        table.Append("</div>");
                        table.Append("</div>");
                        table.Append("</div>");

                    }
                }

                panelBook.Controls.Add(new Literal { Text = table.ToString() });

                con.Close();

            }
            catch (Exception exception)
            {
                Response.Write(exception);
            }
        }

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Ваша проблема здесь

table.Append("<td><center><button id='btnEdit' class='btn btn-round btn-info btn-xs' runat='server' onserverclick='btnEdit_ServerClick' >Edit</button><button id='btnDelete' class='btn btn-round btn-danger btn-xs' runat='server' >Delete</button></center></td>");

Вы не можете добавить runat='server' элемент управления в этой точке.Разметка runat='server' предназначена для страниц ASPX, а не для HTML-кода, который визуализируется путем помещения table в элемент управления Literal.Парсер ASPX никогда его не увидит.

Вы можете поместить HTML-код до кнопки в одном литерале.Затем добавьте свои кнопки, например.

Button btnEdit = new Button();
btnEdit.ClientId = "btnEdit";
btnEdit.CssClass = "btn btn-round btn-info btn-xs";
edibtnEditbutton.Text = "Edit";
btnEdit.Click += btnEdit_ServerClick;

panelBook.Controls.Add(btnEdit);

, затем добавьте кнопку удаления и добавьте остальную часть литерала.

0 голосов
/ 16 мая 2019

Вы можете просто добавить свой package_id в свой button во время создания таблицы

<button onclick="yourFunction(event, package_id)">Your Button</button>

Тогда вы получите id на каждое событие нажатия вашей кнопки

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