用c#取一个table单元格的值
Take a value of cell of a table with c#
我在 .aspx 页面中有这段代码
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>"));
}
我只写了一些代码,因为其余的并不重要。
这是服务器 ajax 页面。实际上,此页面会创建一个 table,并在另一个页面内进行分页。因此,当我单击 "btnEliminaOrdine" 按钮时,我需要将此页面的 "p.Id" 的值带到另一个页面的代码隐藏中。
如何在主页上呈现这些控件?
Response.Write 将页面正文中的所有内容都写为纯字符串。所以这行不通。 ASP.NET 应该知道任何动态添加到页面的控件。您可以按照以下方式绑定 table 和控件 -
页面加载 - 创建 System.Web.UI.HtmlControls.HtmlTable 控件并动态绑定它。
HtmlTable table = new HtmlTable();
foreach (Orders p in lst)
{
var row = new HtmlTableRow();
var td = new HtmlTableCell();
td.InnerHtml = p.Prezzo;
row.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = p.Dettaglio;
row.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = 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);
}
循环后将 table 控件绑定到页面的表单中。
form1.Controls.Add(table);
创建一个事件处理程序方法,该方法将在单击按钮 ELiminaOrdine 时触发
protected void btnEliminaOrdine_Click(object sender, EventArgs e)
{
LinkButton btn = (LinkButton)sender;
Response.Write(btn.ID);
}
这种方式应该可行。已测试。
更新
如果您想要 ajax 解决方案,您的 Response.Write 就可以了。只需使用 asp link 按钮即可。
相反 -
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(string.Format(" <td class=\"text-center\"> <a class=\"btn btn-danger btn-xs\" id=\"btnEliminaOrdine\" onclick=\"deleteOrdine({0},{1},'{2}');\">Delete</a></td> </tr>", p.Id,page,key));
在名为 "deleteOrdine" 的 RistoratoreAccount.aspx 页面中使用 javascript 方法。这将 post 向 ServerListaOrdini.aspx.cs 发出删除请求。
function deleteOrdine(OrdiniId, Page, Key) {
$.ajax({
type: 'post',
url: 'ServerListaOrdini.aspx/DeleteOrdini',
data: {
ordiniId: OrdiniId,
page: Page,
key: Key
},
success: function (response) {
$("#table_ordini").html(response);
}
});
return false;
}
ServerListaOrdini.aspx.cs 将按 id 删除订单,删除 Ordine 后 returns 再次返回 table
public void DeleteOrdini(int ordiniId)
{
Orders o = OrdersDB.SelectById(ordiniId);
bool check = OrdersDB.Delete(o);
}
我在 .aspx 页面中有这段代码
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>"));
}
我只写了一些代码,因为其余的并不重要。
这是服务器 ajax 页面。实际上,此页面会创建一个 table,并在另一个页面内进行分页。因此,当我单击 "btnEliminaOrdine" 按钮时,我需要将此页面的 "p.Id" 的值带到另一个页面的代码隐藏中。
如何在主页上呈现这些控件?
Response.Write 将页面正文中的所有内容都写为纯字符串。所以这行不通。 ASP.NET 应该知道任何动态添加到页面的控件。您可以按照以下方式绑定 table 和控件 -
页面加载 - 创建 System.Web.UI.HtmlControls.HtmlTable 控件并动态绑定它。
HtmlTable table = new HtmlTable();
foreach (Orders p in lst)
{
var row = new HtmlTableRow();
var td = new HtmlTableCell();
td.InnerHtml = p.Prezzo;
row.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = p.Dettaglio;
row.Cells.Add(td);
td = new HtmlTableCell();
td.InnerHtml = 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);
}
循环后将 table 控件绑定到页面的表单中。
form1.Controls.Add(table);
创建一个事件处理程序方法,该方法将在单击按钮 ELiminaOrdine 时触发
protected void btnEliminaOrdine_Click(object sender, EventArgs e)
{
LinkButton btn = (LinkButton)sender;
Response.Write(btn.ID);
}
这种方式应该可行。已测试。
更新
如果您想要 ajax 解决方案,您的 Response.Write 就可以了。只需使用 asp link 按钮即可。
相反 -
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(string.Format(" <td class=\"text-center\"> <a class=\"btn btn-danger btn-xs\" id=\"btnEliminaOrdine\" onclick=\"deleteOrdine({0},{1},'{2}');\">Delete</a></td> </tr>", p.Id,page,key));
在名为 "deleteOrdine" 的 RistoratoreAccount.aspx 页面中使用 javascript 方法。这将 post 向 ServerListaOrdini.aspx.cs 发出删除请求。
function deleteOrdine(OrdiniId, Page, Key) {
$.ajax({
type: 'post',
url: 'ServerListaOrdini.aspx/DeleteOrdini',
data: {
ordiniId: OrdiniId,
page: Page,
key: Key
},
success: function (response) {
$("#table_ordini").html(response);
}
});
return false;
}
ServerListaOrdini.aspx.cs 将按 id 删除订单,删除 Ordine 后 returns 再次返回 table
public void DeleteOrdini(int ordiniId)
{
Orders o = OrdersDB.SelectById(ordiniId);
bool check = OrdersDB.Delete(o);
}