如何在单击数据列表中的按钮时删除会话数据表行
How to remove Session datatable row on click of a Button inside Datalist
如何使用数据列表中的按钮从会话数据表中删除数据?
此代码用于显示添加到购物车中的产品,bremove 按钮用于从数据列表中删除该项目
前端代码
<asp:DataList ID="DataList1" runat="server" Width="100%" HorizontalAlign="Center">
<ItemStyle BorderStyle="Double" />
<ItemTemplate>
<center>
<table class="table" style="border-style: dashed; top: 211px; left: 23px; height: auto; table-layout: fixed; width: 100%;">
<tr>
<td>
<asp:Image ID="Pimg" runat="server" ImageUrl='<%# Eval("Pimg") %>' CssClass="img img-responsive" Height="140px" Width="240px" />
</td>
<td>
<asp:Label ID="Pname" runat="server" Text='<%# Eval("Pname") %>'></asp:Label>
</td>
<td>
<asp:Label ID="Pqty" runat="server" Text='<%# Eval("Pqty") %>'></asp:Label>
</td>
<td>
<asp:Label ID="Price" runat="server" Text='<%# Eval("Price") %>'></asp:Label>
</td>
<td>
<asp:Button ID="bremove" runat="server" Text="Remove" OnClick="bremove_Click" />
</td>
</tr>
</table>
</center>
</ItemTemplate>
</asp:DataList>
后端代码
protected void bremove_Click(object sender, EventArgs e)
{
int index = DataList1.SelectedIndex;
DataTable dt = Session["AddToCard"] as DataTable;
dt.Rows[index].Delete();
porductlist = dt;
BindData();
Response.Redirect("Default.aspx");
}
public void BindData()
{
DataList1.DataSource = porductlist;
DataList1.DataBind();
}
添加AcceptChanges()
protected void bremove_Click(object sender, EventArgs e)
{
int index = DataList1.SelectedIndex;
DataTable dt = Session["AddToCard"] as DataTable;
dt.Rows[index].Delete();
dt.AcceptChanges();
DataList1.DataSource = dt;
DataList1.DataBind();
porductlist = dt;
BindData();
Response.Redirect("Default.aspx");
}
但是您调用 BindData()
并重定向,不需要重定向。除非你想转到另一个页面,在这种情况下 BindData()
是没有必要的。
更新
要获得正确的行号,请使用带有 Command
而不是 Click
的按钮,并将行号发送为 CommandArgument
。
<asp:Button ID="bremove" runat="server" Text="Button" OnCommand="bremove_Command" CommandArgument='<%# Container.ItemIndex %>' />
protected void bremove_Command(object sender, CommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
}
向您的按钮添加自定义属性(例如您的数据库条目的 ID):
<asp:Button ID="bremove" runat="server" Text="Remove" OnClick="bremove_Click" entry-id='<%# Eval("ID") %>' />
然后在代码隐藏中你可以读出属性:
protected void bremove_Click(object sender, EventArgs e)
{
string id = ((Button)sender).Attributes["data-id"];
// .. your code ..
}
请将更新 dt 重新分配给会话变量以更新会话值。
protected void bremove_Click(object sender, EventArgs e)
{
int index = DataList1.SelectedIndex;
DataTable dt = Session["AddToCard"] as DataTable;
dt.Rows[index].Delete();
porductlist = dt;
Session["AddToCard"]= dt
BindData();
Response.Redirect("Default.aspx");
}
public void BindData()
{
DataList1.DataSource = porductlist;
DataList1.DataBind();
}
如何使用数据列表中的按钮从会话数据表中删除数据?
此代码用于显示添加到购物车中的产品,bremove 按钮用于从数据列表中删除该项目
前端代码
<asp:DataList ID="DataList1" runat="server" Width="100%" HorizontalAlign="Center">
<ItemStyle BorderStyle="Double" />
<ItemTemplate>
<center>
<table class="table" style="border-style: dashed; top: 211px; left: 23px; height: auto; table-layout: fixed; width: 100%;">
<tr>
<td>
<asp:Image ID="Pimg" runat="server" ImageUrl='<%# Eval("Pimg") %>' CssClass="img img-responsive" Height="140px" Width="240px" />
</td>
<td>
<asp:Label ID="Pname" runat="server" Text='<%# Eval("Pname") %>'></asp:Label>
</td>
<td>
<asp:Label ID="Pqty" runat="server" Text='<%# Eval("Pqty") %>'></asp:Label>
</td>
<td>
<asp:Label ID="Price" runat="server" Text='<%# Eval("Price") %>'></asp:Label>
</td>
<td>
<asp:Button ID="bremove" runat="server" Text="Remove" OnClick="bremove_Click" />
</td>
</tr>
</table>
</center>
</ItemTemplate>
</asp:DataList>
后端代码
protected void bremove_Click(object sender, EventArgs e)
{
int index = DataList1.SelectedIndex;
DataTable dt = Session["AddToCard"] as DataTable;
dt.Rows[index].Delete();
porductlist = dt;
BindData();
Response.Redirect("Default.aspx");
}
public void BindData()
{
DataList1.DataSource = porductlist;
DataList1.DataBind();
}
添加AcceptChanges()
protected void bremove_Click(object sender, EventArgs e)
{
int index = DataList1.SelectedIndex;
DataTable dt = Session["AddToCard"] as DataTable;
dt.Rows[index].Delete();
dt.AcceptChanges();
DataList1.DataSource = dt;
DataList1.DataBind();
porductlist = dt;
BindData();
Response.Redirect("Default.aspx");
}
但是您调用 BindData()
并重定向,不需要重定向。除非你想转到另一个页面,在这种情况下 BindData()
是没有必要的。
更新
要获得正确的行号,请使用带有 Command
而不是 Click
的按钮,并将行号发送为 CommandArgument
。
<asp:Button ID="bremove" runat="server" Text="Button" OnCommand="bremove_Command" CommandArgument='<%# Container.ItemIndex %>' />
protected void bremove_Command(object sender, CommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
}
向您的按钮添加自定义属性(例如您的数据库条目的 ID):
<asp:Button ID="bremove" runat="server" Text="Remove" OnClick="bremove_Click" entry-id='<%# Eval("ID") %>' />
然后在代码隐藏中你可以读出属性:
protected void bremove_Click(object sender, EventArgs e)
{
string id = ((Button)sender).Attributes["data-id"];
// .. your code ..
}
请将更新 dt 重新分配给会话变量以更新会话值。
protected void bremove_Click(object sender, EventArgs e)
{
int index = DataList1.SelectedIndex;
DataTable dt = Session["AddToCard"] as DataTable;
dt.Rows[index].Delete();
porductlist = dt;
Session["AddToCard"]= dt
BindData();
Response.Redirect("Default.aspx");
}
public void BindData()
{
DataList1.DataSource = porductlist;
DataList1.DataBind();
}