看看其中的三个事件 ItemCommand、ItemCreated、ItemDataBound
要做删除事件主要是用ItemCommand,它会引发CommandEvent事件
ItemCreated的事件是在控件初始化加载时能加载些什么,如果要注册一些提示脚本和样式等信息在这里写就可以
我曾经遇到过用SESSION判断其中的按钮是不是可用,就写在这里面了.
ItemDataBound是在数据绑定后激发,同样可以配合着第一种事件做删除等操作
第一步:在DataList里加入DatakeyName属性
<asp:DataList ID="DataList1" runat="server" DataKeyField="RemarkID" Width="100%" >
</asp:DataList>
这里的RemarkID是从数据库中绑定的主键的字段名
第二步:在DataList的模板中放入一个BUTTON,这里用LINKBUTTON做,并加上commandname属性
<asp:DataList ID="DataList1" runat="server" DataKeyField="RemarkID" Width="100%" >
<ItemTemplate>
<asp:LinkButton ID="LinkButton2" commandname = "DRdel" runat="server">删除</asp:LinkButton>
</ItemTemplate>
</asp:DataList>
第三步:加上上面提到的事件
<asp:DataList ID="DataList1" runat="server" DataKeyField="RemarkID" Width="100%" OnItemCommand="DataList1_ItemCommand" >
然后就是在事件中添加信息
{
if (e.Item.ItemIndex != -1 && e.CommandName == "DRdel")//判断索引和CommandName
{
int id = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex].ToString());//获取激发事件时的行的主键ID
FCD_Remark fcd_Remark = new FCD_Remark();//这是自定义类
if (fcd_Remark.Delete(id))//调用的删除方法
{
Lb_message.Text = "删除评论成功";
BindRemark();
}
else
{
Lb_message.Text = "删除评论失败";
}
}
}
上面的自定义类各位完全可以自己换成自己的删除方法
如果配合其他的事件还可以添加这样的效果:
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) //判断行和交替行
{
LinkButton lbtnDelete = (LinkButton)e.Item.FindControl("lbtnDelete"); //寻找到DataList中的LINKBUTTON按钮
if (lbtnDelete != null)
{
lbtnDelete.Attributes.Add("onclick", "javascript:return confirm('请注意:删除留言后,该项留言若有有回复,回复也被删除。您确认要删除该项留言吗?');"); //注册删除提示框
lbtnDelete.CommandArgument = dlMessages.DataKeys[e.Item.ItemIndex].ToString(); //绑定主键
lbtnDelete.CommandName = "DeleteLword"; //绑定CommandName
}
}
}
//下面的代码类似于上面的 注释就不写了
protected void dlMessages_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.Item.ItemIndex != -1 && e.CommandName == "DeleteLword")
{
int LwordTabId = int.Parse(e.CommandArgument.ToString());
if (new BLLLWordTab().Delete(LwordTabId))
{
tdMsg.InnerHtml = "<font color='red'>删除留言成功!</font>";
ShowLword(ViewState["PlayerID"].ToString());
}
else
{
tdMsg.InnerHtml = "<font color='red'>删除留言失败!</font>";
}
}
}
需要注意的是,在DATALIST中定义的控件是不能直接在代码窗体中找到的,必须用FindControl方法才能找到
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1903034