0
私はtablerowをクリック可能にするこのコードを持っています。自動化されたテーブルの結果を返さないIPostbackeventhandler
namespace ClickableTableRow
{
public class ClickableTableRow : TableRow, IPostBackEventHandler
{
public ClickableTableRow()
: base()
{ }
private EventHandler _click;
public event EventHandler Click
{
add { _click += value; }
remove { _click -= value; }
}
protected virtual void FireClickEvent()
{
if (_click != null)
_click(this, new EventArgs());
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,
Page.ClientScript.GetPostBackEventReference(this, String.Empty));
base.RenderAttributes(writer);
}
public void RaisePostBackEvent(string eventArgument)
{
FireClickEvent();
}
}
上記のコードは、私が手動でテーブルを作成する場合はうまく動作しますが、私はその背後にあるコードでテーブルを作成するときにポストバックを発射しているようだが、何のresutsは返されません。私がやっていることが間違っていることはありますか?コードビハインドは次のようになります。
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void row1_Click(object sender, EventArgs e)
{
Messagebox.Text = "message";
}
ClickableTableRow.ClickableTableRow row1;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Table Table1 = new Table();
TableCell cell1 = new TableCell();
row1= new ClickableTableRow.ClickableTableRow();
row1.Attributes.Add("onmouseover", "this.style.cursor='hand'");
cell1 = new TableCell();
cell1.Text = "llllll";
row1.Cells.Add(cell1);
Table1.Rows.Add(row1);
row1.Click += new EventHandler(row1_Click);
this.pnl2.Controls.Add(Table1);
}
}
メソッドの最後にbase.OnLoad(e)を移動し、Table1にIDを付けてください –
@Adrian Iftode:あなたのソリューションに感謝します。私はIDを含めるように変更しました。しかし、今はslqクエリで作成されたtr IDを設定することができません。また、良い結果が得られないforループを試しました。 –