datalist问题,我要删除一行怎么写那按钮的代码。

zhanzhao1989 2010-09-29 04:03:11
<asp:DataList ID="DataList1" runat="server">
<ItemTemplate>
<table border=1><tr><td><%#Eval("id") %></td><td><%#Eval("features_e")%></td><td><img src="<%#Eval("ylt")%>" /></td><td>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /></td></tr></table>

</ItemTemplate>
</asp:DataList>
上面是我的前台

    public void dsband()
{
OleDbConnection conn = db.getconnection();
conn.Open();
string mysql = "SELECT * FROM testbhproduct order by id desc";
OleDbDataAdapter oa = new OleDbDataAdapter(mysql, conn);
DataSet ds = new DataSet();
oa.Fill(ds, "tb");
DataList1.DataSource = ds.Tables["tb"].DefaultView;
this.DataList1.DataKeyField = "id";
DataList1.DataBind();
}


protected void Button1_Click(object sender, EventArgs e)
{

}
}
这里是我的后台,我要怎么样才能点击那按钮直接删除那行,我的难点就在于怎么获取那行的ID。请高手指教。
...全文
175 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanzhao1989 2010-09-29
  • 打赏
  • 举报
回复
string mysql = "SELECT * FROM testbhproduct order by id desc"; 我的这个sql语句这样写对吗?
daifangci 2010-09-29
  • 打赏
  • 举报
回复
都蛮好的,一般是用itemCommand事件执行
若-相惜 2010-09-29
  • 打赏
  • 举报
回复
前台

<asp:Repeater ID="repCaseType" runat="server">
<HeaderTemplate>
<table width="100%" border="0" align="center" cellpadding="2" cellspacing="0" class="sys_list_table"
bgcolor="#FFFFFF">
<tr class="TR_BG">
<td align="center" valign="middle" class="sys_topBg">
ID
</td>
<td align="center" valign="middle" class="sys_topBg">
类别名称
</td>
<td align="center" valign="middle" class="sys_topBg">
操作
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr class="TR_BG_list" onmouseover="this.style.backgroundColor='#BEFBD1'" onmouseout="this.style.backgroundColor='#FFFFFF'">
<td align="center" valign="middle">
<%#Eval("id") %>
</td>
<td align="center" valign="middle">
<%#Eval("name") %>
</td>
<td align="center" valign="middle">
<a href='CaseTypeUpdate.aspx?id=<%#Eval("id") %>' class="list_link">
<img src="Images/edit.gif" border="0" alt="修改" />
</a><a href='CaseTypeList.aspx?action=del&id=<%#Eval("id") %>' class="list_link"
onclick="{if(confirm('确认删除吗?')){return true;}return false;}">
<img src="Images/del.gif" border="0" alt="删除" /></a>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>

后台

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

DisplayCaseType();//绑定案例类别信息
}
if (Request["action"] != null)
{
int id = Convert.ToInt32(Request["id"]);
DelPro(id);//删除
}
}

/// <summary>
/// 执行删除
/// </summary>
/// <param name="id"></param>
public void DelPro(int id)
{

int result = CaseTypeManager.DelType(id);

MessageBox.ShowAndRedirect(this, "删除成功", "CaseTypeList.aspx");
}

够明白的了吧
zhanzhao1989 2010-09-29
  • 打赏
  • 举报
回复
各位意见不各和呀。能不能用中文解析下哦。
ysz89757 2010-09-29
  • 打赏
  • 举报
回复
学习下
mngzilin 2010-09-29
  • 打赏
  • 举报
回复
参考:
----------------------------------------
protected void PosButton_Click(object sender, EventArgs e)
{
string Action = ((Button)sender).CommandArgument;
int itemIndex = ((DataListItem)((Button)sender).NamingContainer).ItemIndex;
string id = DataList1.DataKeys[itemIndex].ToString();
switch (Action)
{
case "Delete":
MyDoSql.ExcuteSql("delete from CM_Article where Id=" + id);
若-相惜 2010-09-29
  • 打赏
  • 举报
回复

<a href='ProductClassList.aspx?action=del&id=<%#Eval("id") %>' class="list_link" onclick="{if(confirm('确认删除吗?')){return true;}return false;}"><img src="Images/del.gif" border="0" alt="删除"/></a>



protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

DisplayProduct();//绑定产品信息
}
if (Request["action"] != null)
{
int id = Convert.ToInt32(Request["id"]);
DelPro(id);//删除
}
}

/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
public void DelPro(int id)
{
ProductManager.DelProduct(id);
DisplayProduct();
}
mngzilin 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aa4232229 的回复:]
不明白为嘛要用Buttond的onClick事件 实践证明根本是不行的
[/Quote]

纯胡说!!你自己最好琢磨下到底行不行。最好百度下“NamingContainer”是什么东西。然后你再说为什么不行,为什么行。
zhangyumei 2010-09-29
  • 打赏
  • 举报
回复
使用按钮的Command事件:

<asp:DataList ID="DataList1" runat="server">
<ItemTemplate>
<table border=1><tr><td> <%#Eval("id") %> </td><td><%#Eval("features_e")%></td><td><img src="<%#Eval("ylt")%>" /></td><td>
<asp:Button ID="Button1" runat="server" Text="Button" oncommand="Button1_Command" CommandArgument='<%#Eval("id") %>'/></td></tr></table>

</ItemTemplate>
</asp:DataList>



protected void Button1_Command(object sender, CommandEventArgs e)
{
string id= e.CommandArgument.ToString();
//do something
}

aa4232229 2010-09-29
  • 打赏
  • 举报
回复
int ID = DataList1.DataKeys[e.Item.ItemIndex];//获取删除信息的ID
忘了
应该是int ID=Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex].ToString());
aa4232229 2010-09-29
  • 打赏
  • 举报
回复
删除后要在onitemcommand事件里重新绑定一下数据源哦
要是能把DataList放到UpdatePanel里效果就更好了
aa4232229 2010-09-29
  • 打赏
  • 举报
回复
不明白为嘛要用Buttond的onClick事件 实践证明根本是不行的

<asp:DataList ID="DataList1" runat="server" DataKeyField=“ID” onitemcommand="DataList1_ItemCommand">
<ItemTemplate>
<table border=1><tr><td><%#Eval("id") %></td><td><%#Eval("features_e")%></td><td><img src="<%#Eval("ylt")%>" /></td><td>
<asp:Button ID="Button1" runat="server" Text="Button" CommandName="Del" /></td></tr></table>

</ItemTemplate>
</asp:DataList>



把Button的单击事件去掉 换成CommandName="Del"
在DateList里加入DataKeyField=“ID” ID是你数据源的字段
Datalist加入onitemcommand事件

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "Del")//Button里的CommandName
{
int ID = DataList1.DataKeys[e.Item.ItemIndex];//获取删除信息的ID
///
///删除信息的方法
///
Delete(ID);
}
}


gongsun 2010-09-29
  • 打赏
  • 举报
回复
...
大飞飞虫 2010-09-29
  • 打赏
  • 举报
回复
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" commandname="domy" />


在datalist的 rowcommand中写

if (e.commandname=="domy")
{
//做你的事情
}

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧