J'ai une fonction Ajax qui a une page Serveur. Dans cette page de serveur j'utilise la pagination, mais il y a un problème.Prenez l'identifiant d'une ligne de table avec response.write asp-net C#
Sur la page du serveur, je crée une table par response.write
protected void Page_Load(object sender, EventArgs e)
{
int page = 1;
string key = "N";
if (Request.Form["page"] != null)
{
page = Convert.ToInt32(Request.Form["page"]);
}
if (Request.Form["key"] != null)
{
key = Convert.ToString(Request.Form["key"]);
}
List<Orders> lst = OrdersDB.OttieniOrdini(page);
Response.Write(string.Format(" <table class=\"table table-striped table-hover custab\"> "));
Response.Write("<tr><td>Id</td><td>Prezzo</td><td>Dettaglio</td><td>Voto</td><td><span class=\"fa fa-gear \"></span></td></tr>");
foreach (Orders p in lst)
{
Response.Write(string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td>", p.Prezzo, p.Dettaglio, p.Voto));
Response.Write(string.Format(" <td class=\"text-center\"> <asp:LinkButton class=\"btn btn-danger btn-xs\" ID=\"btnEliminaOrdine\" OnClick=\"javascript:__doPostBack('btnEliminaOrdine_Click','')\" runat=\"server\">Delete</asp:LinkButton></td> </tr>"));
}
Response.Write("</table>");
int num_page = OrdersDB.GetNumPage(key);
Response.Write("<br/>");
Response.Write(string.Format(@"<nav> <ul class = ""pagination pagination-sm""> "));
int min_page = page - 5;
if (min_page <= 0) min_page = 1;
int max_page = min_page + 9;
if (max_page > num_page) max_page = num_page;
if (min_page > 1)
{
Response.Write(string.Format(@"<li><a href=""#"" aria-label=""Previous"" onclick=""return show_page('{0}')""> <span aria-hidden=""true"">Prev</span></a> </li> ", min_page - 1));
}
for (int i = min_page; i <= max_page; i++)
{
if (i != page)
{
Response.Write(string.Format(@"<li><a href=""#"" onclick=""return show_page('{0}')"">{0}</a> </li> ", i));
}
else
Response.Write(string.Format(@" <li class=""active""><a href=""#"">{0}</a></li> ", i));
}
if (max_page < num_page)
Response.Write(string.Format(@"<li> <a href=""#"" aria-label=""Next"" onclick=""return show_page('{0}')""><span aria-hidden=""true"">Next</span></a> </li> ", max_page + 1));
Response.Write(string.Format(@"</ul> </nav> "));
}
Dans un response.write j'ai créé un LinkButton qui ont la fonction de supprimer la ligne quand je clique dessus. Pour cette raison, j'ai besoin d'avoir l'ID de la ligne à supprimer. Donc, mon problème est le suivant: comment puis-je attraper l'événement click et prendre l'Id (p.Id)?
J'ai essayé d'utiliser:
List<Orders> lst = OrdersDB.OttieniOrdini(page); //GET ORDERDER
HtmlTable table = new HtmlTable();
foreach (Orders p in lst)
{
var row = new HtmlTableRow();
var td = new HtmlTableCell();
td.InnerHtml = Convert.ToString(p.Prezzo);
row.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = p.Dettaglio;
row.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = Convert.ToString(p.Voto);
row.Cells.Add(td);
td = new HtmlTableCell();
LinkButton btnEliminaOrdine = new LinkButton();
btnEliminaOrdine.ID = "btnEliminaOrdine" + p.Id;
btnEliminaOrdine.CssClass = "btn btn-danger btn-xs";
btnEliminaOrdine.Text = "Delete";
btnEliminaOrdine.Click += new System.EventHandler(this.btnEliminaOrdine_Click);
td.Controls.Add(btnEliminaOrdine);
row.Cells.Add(td);
table.Rows.Add(row);
}
this.Controls.Add(table);
mais il ne fonctionne pas parce que je ne peux pas voir le tableau .. Je ne sais pas pourquoi.
Pouvez-vous expliquer ce que je dois faire sur la page du serveur et sur la page "client"?
Cela semble très painful.Why ne pas simplement utiliser un contrôle GridView et activer la pagination sur elle? –
Je n'ai jamais utilisé gridview sur les pages web ... –
Aujourd'hui est une bonne journée pour apprendre –