假设在Repeater中执行删除操作,有两种处理方式,第一种是使用<a>重新转回到本页,在url中添加参数。

第二种方式,是使用服务器控件,引发repeater的onitemcommand事件,这是一种服务器回发操作(IsPostBack=true),

类似于使用GridView时用deletecommand,但repeater要求必须使EnableViewState=true.

结合自定义分页控件(uercontrol),倘若要求删除操作后仍然回到当前页,则分页控件必须通过url参数获得当前页等值。

第二种方式,可封装到uercontrol的内部用默认的viewstate处理

<div id="d_officeright">
<asp:Repeater ID="repInfos" runat="server" EnableViewState="true" OnItemCommand="repInfos_ItemCommand">
<HeaderTemplate>
<table>
<tr>
<th>
信息标题
</th>
<th>
发布日期
</th>
<th>
信息状态
</th>
<th>
操作
</th>
<th>
删除
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%# Eval("title")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem,"addTime","{0:yyyy-MM-dd}")%>
</td>
<td>
<%# ConvertStatusToZh(Eval("infoStatus").ToString())%>
</td>
<td>
<a href="GoViewInfo.aspx?id=<%# Eval("id").ToString()%>&infotype=<%# Eval("infotype").ToString()%>">
查看"
<%# Eval("id").ToString()%>"</a>
</td>
<td>
<a href='<%# @"?action=delete&id="+Eval("id").ToString() +@"&infotype="+Eval("infotype").ToString() %>'
runat="server">删除
</a>
<asp:LinkButton ID="lb1" runat="server" CommandName="Delete" CommandArgument='<%# Eval("id").ToString()+"|" + Eval("infotype").ToString()%>'>回发删除</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
<tr>
<td>
</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
<uc2:PageBar ID="PageBar1" runat="server" />
</div>
override protected void OnInit(EventArgs e)
{
//InitializeComponent();
this.PageBar1.PageChangeEvent += new EventHandler(PageBar1_PageChangeEvent);

this.PageBar1.PageSize = 2;

base.OnInit(e);
}

protected void Page_Load(object sender, EventArgs e)
{
if (WebBusiness.IsSessionTimeOut(this)) return;

string action = Request.QueryString["action"];

DoAction(action);


}

void PageBar1_PageChangeEvent(object sender, EventArgs e)
{
BoundData();
}

public string ConvertStatusToZh(string s)
{

switch (s)
{
case "0":
return "<font color='green'>待审核</font>";
case "1":
return "使用中";
case "2":
return "<font color='gray'>已删除</font>";
case "3":
return "<font color='yellow'>已过期</font>";
default:
return "<font color='green'>待审核</font>";
}

}

protected void DoAction(string action)
{
switch (action)
{
case "delete":
DeleteItem(Request.QueryString[
"id"], Request.QueryString["infotype"]);
BoundData();
break;
default:
if (!Page.IsPostBack) BoundData();
return;
}
}

protected void BoundData()
{
int itemcount = 0;
ICollection
<LgInfo> c = LogisticInfo.GetInfoListByUser(Session["userid"].ToString(),
this.PageBar1.PageIndex, this.PageBar1.PageSize, out itemcount);
if (c != null)
{
this.repInfos.DataSource = c;
this.repInfos.DataBind();
}
this.PageBar1.RecordCount = itemcount;

}

protected void DeleteItem(string id, string infotype)
{
string err;
LgInfo c
= new LgInfo();
c.Id
= int.Parse(id);
c.InfoType
= int.Parse(infotype);
LogisticInfo.DeleteLgInfo(c,
out err);
}

protected void repInfos_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string cmd = e.CommandName;
string parm=e.CommandArgument.ToString();
if (cmd == "Delete")
{
DeleteItem(parm.Split(
'|')[0], parm.Split('|')[1]);
}
BoundData();
}
posted on 2011-03-15 16:36  佐伊凡  阅读(297)  评论(0编辑  收藏  举报