質問

ページの1つに、実行時に生成された行を含むテーブルがあります。コードビハインドからプレゼンテーションを分離するために、それらの行のコンテンツを独自のコントロールに移動し、実行時にプロパティを設定したいと思います。しかし、それは私が期待しているようには機能していません。

UserControlを継承する行のようなコントロールがある場合、これを実行して、実行時にコントロールを作成できます。

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

それから、それをテーブルに追加したかった:

MyTable.Rows.Add(row);

ただし、行はSystem.Web.UI.HtmlControls.HtmlTableRowまたはSystem.Web.UI.WebControls.TableRowを継承しないため、実行できません。ただし、コントロールをこれら2つのいずれかから継承させた場合、上記のLoadControl呼び出しは、コントロールがUserControlを継承しないと文句を言います。

ここで幸せな解決策は何ですか?追加情報が必要な場合は、お問い合わせください。

役に立ちましたか?

解決

あなたがしたいことはこれだと思います:

    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コレクションに直接追加できないことです。最初にラップする必要があります。よりクリーンなソリューションがあるかもしれませんが、これは機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top