2012年1月28日土曜日

[ASP.NET]最も簡単にListViewで行の任意の位置をクリックで行選択する

テーブルの行選択は意外と難しい。

色々試行錯誤した結果、↓こうするのが一番シンプルと思われる。
  • ItemTemplate内に隠し選択ボタンを用意する
  • TRタグのonclickに隠し選択ボタンでポストバックさせるスクリプトを設定する

実際のコードで見てみると↓こんな感じ。


Default.aspx
<ItemTemplate>
    <tr onclick="<%# GetRowClickScript(Container) %>">
        <td style="display:none;">
            <asp:Button ID="SelectButton" runat="server" CommandName="Select" Text="選択"/>
        </td>
Containerを渡すのがポイント。
ButtonはLinkButtonでも可。


Default.aspx.cs
        /// 
        /// 行クリックスクリプト取得
        /// 
        /// ListViewItem
        /// 選択ボタンクリックスクリプト
        public string GetRowClickScript(object container)
        {
            ListViewItem item = (ListViewItem)container;
            Control button = item.FindControl("SelectButton");
            return Page.ClientScript.GetPostBackEventReference(button, "");
        }
これより簡単に出来る方法があれば、是非ご教授願いたい。

0 件のコメント:

コメントを投稿