我在.aspx文件中具有以下标记:
<asp:Repeater ID="ListOfAssignments" runat="server" OnItemDataBound="ListOfAssignments_ItemDataBound">
<ItemTemplate>
<asp:Label ID="AssignmentID" runat="server" Text="Label"></asp:Label>
<br />
<asp:Label ID="PathToFile" runat="server" Text="Label"></asp:Label>
<br />
<asp:Button ID="RemoveAssignment" runat="server" Text="Remove" OnClick="RemoveAssignment_Click"/>
</ItemTemplate>
</asp:Repeater>
在相当标准的中继器控件中,有两个标签和一个按钮。中继器绑定到数据库,并使用数据库中的记录填充标签。
这是我的问题:对于中继器中的每个按钮,我都有一个click事件。当用户单击任何按钮时,将调用RemoveAssignment_Click方法。在click事件中,我想知道与用户单击的任何按钮相关联的两个标签的文本。
我的意思是,用这种方法:
protected void RemoveAssignment_Click(object sender, EventArgs e)
{
//code goes here
}
我希望能够知道与单击的按钮相邻的标签的文本。我怎么做?
您正在寻找的是Button.OnCommand方法:
这使您可以在网页上创建多个Button控件,并以编程方式确定单击了哪个Button控件。
因此,在内部ListOfAssignments_ItemDataBound
您可以将CommandArgument分配给按钮,其中的CommandArgument
是要删除的文章的ID:
protected void ListOfAssignments_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Button delButton = e.Item.FindControl("RemoveAssignment") as Button;
delButton.CommandArgument = //set to the value of AssignmentID
//rest of your code
}
}
现在,您的按钮应该说使用新的OnCommand了:
<asp:Button ID="RemoveAssignment" OnCommand="RemoveAssignment" runat="server" Text="Remove" />
然后创建方法:
protected void RemoveAssignment(object sender, CommandEventArgs e)
{
int articleIDToDelete = 0;
if (Int32.TryParse((string)e.CommandArgument, out articleIDToDelete))
{
//delete the article with an ID = articleIDToDelete
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句