CommandNames/CommandArguments を使用して、リピーターのボタンの onclick イベントを作成しようとしていますが、ボタンのクリックでイベントを発生させることができないようです。
私のフロントエンドは次のようなものです:
<asp:Repeater runat="server" ID="rptCompany" OnItemCommand="rptCompanyCommand" OnItemDataBound="rptCompanyBound">
<ItemTemplate>
<ul>
<li><asp:Label CssClass="selectedCompany" runat="server" ID="lnkCompany"></asp:Label> <asp:Button CommandName="Select" CommandArgument='<%# Eval("ComId") %>' runat="server" ID="btnSelect" Text="Select" /></li>
</ul>
</ItemTemplate>
</asp:Repeater>
バックエンド コードは次のとおりです。
protected void loadResults()
{
dtVCompany = new components.db.PIDSDB.vCompanyDataTable();
dtVCompany = taVCompany.GetCompaniesByName(txtSearch.Text + "%");
rptCompany.DataSource = dtVCompany;
rptCompany.DataBind();
}
protected void rptCompanyBound(object sender,
System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
DataRowView nRow = null;
switch (e.Item.ItemType)
{
case ListItemType.Item:
case ListItemType.AlternatingItem:
nRow = (DataRowView)e.Item.DataItem;
((Label)e.Item.FindControl("lnkCompany")).Text = "" + nRow["Company"] + "|" + nRow["ComId"];
break;
}
}
protected void rptCompanyCommand(object source, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "Select":
{
String selectedID = e.CommandArgument.ToString();
}
break;
default:
{
}
break;
}
}
私が間違っていない限り、行のブレークポイントにヒットすると思っていたでしょう:
String selectedID = e.CommandArgument.ToString();
ボタンをクリックすると、しかし、そうではありません。