0

検索機能を持つカスタム コントロールがあります。ユーザーが検索をクリックすると、コードは検索結果に基づいてボタンのリストを生成します。

各ボタンの CommandArgument プロパティには、検索結果の ID が含まれています。ユーザーがボタンをクリックすると、イベントを処理し、CommandArgument を取得して、値を使用してメイン ページにイベントを発生させます。

問題は、ボタンがイベントを発生させていないことです。これは、ポストバックなどで失われるためだと思います。これを機能させるには、値をリストする別の方法を検討する必要がありますか?

これを回避する最も簡単な方法は何ですか? ここに私が持っているものがあります:

private void Search()
{
        foreach (var c in companies)
        {
            TableRow companyRow = new TableRow();
            TableCell nameRowCell = new TableCell();
            TableCell regRowCell = new TableCell();

            Button selectButton = new Button();
            selectButton.CommandArgument = c.Id.ToString();
            selectButton.Text = c.Name;
            selectButton.Click += new EventHandler(selectButton_Click);
            selectButton.CausesValidation = false;

            nameRowCell.Controls.Add(selectButton);
            companyRow.Cells.Add(nameRowCell);
            tblCompanies.Rows.Add(companyRow);

        }
}

    void selectButton_Click(object sender, EventArgs e) // <- Not getting handled
    {
        Button btn = (Button)sender;
        string id = btn.CommandArgument;
        if (id != "" && CompanyFound != null)
            CompanyFound(new Company() { Id = int.Parse(id) });
    }
4

1 に答える 1