次のようなマークアップを使用してカスタムコントロールを作成しています。
<Custom:CustomGrid>
<Columns>
<Custom:DataColumn HeaderText="FirstName" />
<Custom:DataColumn HeaderText="LastName" />
</Columns>
</Custom:CustomGrid>
外側のDiv/TableタグとColumnタグをそれぞれレンダリングするために、RenderとRenderChildrenの両方をオーバーライドしています。
各THに、並べ替え用のLinkButtonを含めたいと思いますHeaderText
。列のコレクションを実行するループを作成foreach
し、その中にLinkButtonを含む各列のTHを作成しました。LinkButtonを使用してレンダリングしますlinkBtn.RenderControl(writer);
私がhtmlで取得するのは、空のアンカータグです。これは、asp.netがこのようにレンダリングされたときにサーバーコントロールのJS側をレンダリングすることを認識していないためだと思います。しかし、私は自分がこれまでとは違う方法で何ができるのかわかりません。何か案は?
編集: href = "javascript:_doPostBack('myGrid $ Sort_firstName'、'')"が作成されていることがわかります。なぜ文字がhtmlエスケープされているのかはわかりませんが、それはhtmlソースビューアだけだと思います(またはそうではないかもしれません...)とにかく、イベントハンドラはまだ起動されていません。