如何删除会话数据表行上点击一个按钮里面Datalist
问题描述:
如何使用数据列表中的按钮删除会话数据表中的数据?
如何删除会话数据表行上点击一个按钮里面Datalist
该代码是用于显示购物车和B取出按钮内加入产物被用来从数据列表
前端代码
<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()
是没有必要的。
UPDATE
要获得正确的行数,使用按钮用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);
}
+0
谢谢你的帮助@vdwwd –
答
自定义属性(例如,你的数据库条目的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 ..
}
+0
谢谢@ user1519979我已经尝试过你的步骤,但它删除数据存在于数据表中的0位置行 –
答
请重新分配将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();
}
而你的问题是......? – VDWWD
如何从数据表中删除数据,然后点击Datalist中的按钮?会话数据绑定里面Datalist我想删除单行数据 –