我试图在绑定后使中继器中的特定标签可见。我不希望转发器中每个项目的所有标签都可见。只是我单击按钮的那个。当我单击按钮更新时,我正在更新我的数据库中的锦标赛项目的信息,然后我想显示一个标签来说明更改是成功的,但仅适用于我更新的项目。
这是后面的代码。[...] 是我在数据库中进行更新的地方
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;
}
}
}