我正在使用asp.net
custom control
我正在使用repeater control
来显示radio buttons
。
点击ItemCommand event
时,我需要触发转发器RadioButton
我遇到的问题是RadioButton
不是触发ItemCommend event
的标尺,而且没有CommendArgument
和CommandName
属性。
要完成我创建asp.net server control
,请从RadioButton
驱逐我,并在其中添加CommendArgument
和CommandName
属性。
我还在其中添加了Button
,以便我可以通过编程方式调用此button
的点击事件来触发转发器ItemCommand event
。
现在我面临的问题是我已经解雇了Button's click
事件,但仍未发生ItemCommand
事件。
知道怎么收拾这个骗局吗?
答案 0 :(得分:1)
当单选按钮的ItemCommand
被触发时,您可以调用转发器OnCheckedChanged
事件。
我认为主要的问题是你不确定如何创建ItemCommand
期望的参数,这是一个我相信会有所帮助的例子:
<强> ASPX:强>
<asp:Repeater ID="rptColors" runat="server" onitemcommand="rptColors_ItemCommand">
<ItemTemplate>
<asp:RadioButton ID="rdbColour" Text='<%# Eval("Color") %>' AutoPostBack="true" runat="server" OnCheckedChanged="Checked" /> <br />
</ItemTemplate>
</asp:Repeater>
代码背后:
public class Colours
{
public string Color { get; set; }
}
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
rptColors.DataSource = new List<Colours> { new Colours { Color = "Red" }, new Colours { Color = "Black" } };
rptColors.DataBind();
}
}
protected void Checked(object sender, EventArgs e)
{
foreach (RepeaterItem item in rptColors.Items)
{
RadioButton rdbColour = item.FindControl("rdbColour") as RadioButton;
if (rdbColour.Text.Equals((sender as RadioButton).Text))
{
CommandEventArgs commandArgs = new CommandEventArgs("SomeCommand", rdbColour.Text);
RepeaterCommandEventArgs repeaterArgs = new RepeaterCommandEventArgs(item, rdbColour, commandArgs);
rptColors_ItemCommand(rdbColour, repeaterArgs);
}
}
}
protected void rptColors_ItemCommand(object source, RepeaterCommandEventArgs e)
{
//Runs when you select the radio button in the repeater
System.Diagnostics.Debugger.Break();
}
}