0

私はasp.netアプリケーションのサーバー側にいます。'HtmlText'という変数にいくつかのhtmlソースコードがあります。このソースコードは、xsl変換を介してxmlから生成され、次のようになります。

<h1>ABC Test KH</h1>
<!--place for the control-->
<table class="tablesorter" id="tablesorter183">
<thead>
<tr>
    <th align="left">Name</th>
    <th align="right">DB</th>
    <th align="right">DB Anteil in Prozent</th>
    <th align="right">ABC</th>
</tr>
</thead>
<tbody>
<tr>
    <td align="left" fieldName="Name">Fabrikam, Inc.</td>
    <td align="right" fieldName="DB">881.378,00 €&lt;/td>
    <td align="right" fieldName="DB_Anteil_in_Prozent">29,92</td>
    <td align="right" fieldName="ABC">A</td>
</tr>
</tbody>
</table>

これで、このソースコードはInnerHtml-propertyを介してaspx-websiteに挿入されます。そのaspxにはid'book'のdivがあります。

book.InnerHtml = HtmlText

これは今のところうまく機能します。

しかし今、私はそのhtmlにドロップダウンコントロールを作成したいと思います。これはサーバー側でアクセスできます。このコントロールは、コメント<!--place for the control-->が配置されているh1タグとテーブルタグの間に配置する必要があります。

asp-controlを動的に作成し、それにイベントをバインドする方法を知っていますが、これは、最初にaspxがある場合にのみ機能します。その時点で文字列だけに存在する一部のhtmlソースに対してはそれを行うことはできません。

私がやりたいことをする方法はありますか、それとも私はここで間違った方向に進んでいますか?

提案を事前に感謝します。

よろしく、カイ

4

1 に答える 1

1

唯一の解決策は、DropDownList を継承するコントロールを作成し、その RenderControl メソッドをオーバーライドすることだと思います。

このようなもの:

public override void RenderControl(HtmlTextWriter writer)
{
      //...
      //Fill in the variable HtmlText content
      //Split it to 2 variables - before and after the control place, and:

      writer.Write(startString);
      base.RenderControl(writer);
      writer.Write(endString);
}

そして、DropDownList の代わりにこのコントロールを使用します。

編集:いくつかのコントロールの場合、ここで提案されている方法を使用します: .net コントロールを文字列にレンダリングし、イベントを発生させます:

文字列を複数の文字列に分割します。最初の文字列は先頭から最初のコントロールまで、2 番目の文字列は最初のコントロールから 2 番目のコントロールまでというように分割します。

次に、各文字列を新しい LiteralControl に挿入し、ページに追加します。次のようにします。

book.Controls.Add(LiteralControl1);
book.Controls.Add(DropDownList1);
book.Controls.Add(LiteralControl2);
book.Controls.Add(Button1);
于 2012-11-22T12:14:12.033 に答える