先建立一個DataList控件
看看其中的三個事件 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" >
然後就是在事件中添加信息
上面的自定義類各位完全可以自己換成自己的刪除方法
如果配合其他的事件還可以添加這樣的效果:
protected void dlMessages_ItemCreated(object sender, DataListItemEventArgs e)
...{
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方法才能找到