2009-04-30 17 views
1

私たちのページの1つに、実行時に生成された行を持つテーブルがあります。プレビューとコードビハインドを分離するために、これらの行のコンテンツを独自のコントロールに移動し、実行時にそのプロパティを設定したいと考えています。しかし、それは私が期待しているように動作していない。実行時にテーブルに行を追加

私はUserControlから継承する私の列のようなコントロールを持っている場合は、私は、実行時にコントロールを作成するには、この操作を行うことができます。

MyControl row = (MyControl)LoadControl("~/controls/MyControl.ascx"); 

その後、私は私のテーブルにそれを追加したい:

MyTable.Rows.Add(row); 

ただし、行はSystem.Web.UI.HtmlControls.HtmlTableRowまたはSystem.Web.UI.WebControls.TableRowから継承されないため、行えません。しかし、私がコントロールをこれらの2つのうちの1つから継承すると、上のLoadControl呼び出しは、コントロールがUserControlから継承しないことを訴える。

ここではうれしい解決策はありますか?追加情報が必要な場合は、尋ねてください。私はあなたがする探しているものだと思い

答えて

4

はこれです:

MyControl row = (MyControl)LoadControl("~/controls/MyControl.ascx"); 
    TableCell newCell = new TableCell(); 
    newCell.Controls.Add(row); 
    TableRow newRow = new TableRow(); 
    newRow.Cells.Add(newCell); 
    MyTable.Rows.Add(newRow); 

あなたが述べたように、問題があなたのコントロールは、複数の基底クラスを継承することはできませんし、Rowsコレクションに直接あなたのコントロールを追加することはできませんということです。あなたは最初にそれをラップする必要があります。よりクリーンなソリューションがあるかもしれませんが、これは機能します。

関連する問題