我正在尝试在绑定后在我的转发器中显示特定标签。 我不希望转发器中每个项目的所有标签都可见。只是我点击按钮的那个。 当我点击按钮更新时,我正在更新我的数据库中的锦标赛项目的信息,然后我想显示一个标签,说明更改是成功的,但仅限于我更新的项目。
这是背后的代码。 [...]是我在DB中进行更新的地方
protected void repeatTourney_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "btnUpdate_Click")
{
[...]
Label lblSuccess= (Label)e.Item.FindControl("lblUpdateSuccess");
bindRepeater(ddlEvents.Text);
lblSuccess.Visible = true;
}
}
这是aspx。 [...]是文本框和其他包含我的数据库项目信息的东西。
<asp:Repeater ID="repeatTourney" runat="server" OnItemDataBound="repeatTourney_ItemDataBound"
OnItemCommand="repeatTourney_ItemCommand">
<ItemTemplate>
<div class="form">
[...]
<asp:Label ID="lblUpdateSuccess" runat="server" Text="Update success" Visible="false" />
<asp:Button ID="btnUpdate" runat="server" Text="Update" CssClass="button" CommandName="btnUpdate_Click" />
[...]
</div>
</ItemTemplate>
</asp:Repeater>
最后看起来应该是这样的
Item
Info
BtnUpdate
lblSuccess.Visible = false
Item
Info
BtnUpdate <== Clicked
lblSuccess.Visible = true
感谢您提供的任何帮助。
编辑:这是我的bindRepeater代码
private void bindRepeater(string name)
{
List<Tourney> list = TourneyDAL.GetByNameEvent(name);
[...]
repeatTournois.DataSource = list;
repeatTournois.DataBind();
[...]
}
编辑2: 感谢您提供ID的概念,以告知在绑定后哪一个需要可见。
工作得很好。 :)
这是我的新代码
private void bindRepeater(string name, int index)
{
List<Tourney> list = TourneyDAL.GetByNameEvent(name);
[...]
repeatTourney.DataSource = list;
repeatTourney.DataBind();
[...]
if (index != 0)
{
Label lblReussie = (Label)repeatTourney.Items[index].FindControl("lblUpdateSuccess");
lblSuccess.Visible = true;
}
protected void repeatTourney_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "btnUpdate_Click")
{
[...]
Label lblSuccess= (Label)e.Item.FindControl("lblUpdateSuccess");
bindRepeater(ddlEvenements.Text, e.Item.ItemIndex);
lblSuccess.Visible = true;
}
}
}
答案 0 :(得分:2)
你还没有说出了什么问题,你有例外吗?
您可以使用ItemDataBound
来设置可见性。但是因此您必须存储最后更新的索引/ ID,例如在字段中:
protected void repeatTourney_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "btnUpdate_Click")
{
updatedID = int.Parse(e.CommandArgument.ToString());
bindRepeater(ddlEvents.Text);
}
}
private int? updatedID = null;
protected void repeatTourney_ItemDataBound(Object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var tourney = (Tourney) e.Item.DataItem;
Label lblUpdateSuccess = (Label)e.Item.FindControl("lblUpdateSuccess");
lblUpdateSuccess.Visible = updatedID.HasValue && tourney.Id == updatedID.Value;
}
}