2017-07-04 23 views
0

「表示」ボタンをクリックすると、選択した行が強調表示されます。ASP.NETリストビューで選択した行の色を変更する

私は数時間のためにGoogleで検索しましたが、本当に私が逃したものを理解することはできません。

<tr height="30%"> 
    <td valign="top"> 
     <div runat="server" id="area" style="height:300px; overflow:scroll"> 
      <asp:Label ID="lbl_Result" runat="server"></asp:Label> 
      <asp:ListView ID="lv_MessageSubject" runat="server" vertical-align="top" OnSelectedIndexChanged="lv_MessageSubject_SelectedIndexChanged" OnSelectedIndexChanging="lv_MessageSubject_SelectedIndexChanging" DataKeyNames ="MessageID" OnPagePropertiesChanged="lv_MessageSubject_PagePropertiesChanged" OnPagePropertiesChanging="lv_MessageSubject_PagePropertiesChanging" OnItemDataBound="lv_MessageSubject_ItemDataBound"> 
      <LayoutTemplate> 
      <table border="1"> 
       <tr runat="server"> 
        <th runat="server"></th> 
        <th runat="server">Message</th> 
        <th runat="server">Sender</th> 
       </tr> 
       <tr runat="server" id="itemPlaceholder" /> 
      </table> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <tr> 
      <td><asp:Button ID="cmd_View" runat="server" CommandName="Select" Text="View" Height="21px" /></td> 
      <td><div runat="server" id="area"><asp:Label ID="Label2" runat="server" Text='<%#Eval("Message") %>' /></div></td> 
      <td><asp:Label ID="Label3" runat="server" Text='<%#Eval("Sender") %>' /></td> 
      </tr> 
     </ItemTemplate> 
     </asp:ListView> 
     <asp:DataPager ID="DataPager" runat="server" PagedControlID="lv_MessageSubject" 
      PageSize="10"> 
      <Fields> 
       <asp:NextPreviousPagerField ShowFirstPageButton="True" ShowNextPageButton="False" /> 
       <asp:NumericPagerField /> 
       <asp:NextPreviousPagerField ShowLastPageButton="True" ShowPreviousPageButton="False" /> 
      </Fields> 
     </asp:DataPager> 
     </div> 
     </td> 
    </tr> 

私は私が選択した変更がItemDataBoundを引き起こすことができるかわからないにもかかわらず、ItemDataBoundを使用するように言われました。とにかく試したコードはここにあります:結果は、 'view'ボタンをクリックしたときにItemDataBoundがトリガーされませんでした。

答えて

0

ItemDataBoundは実際に正しいアイデアのようには聞こえません。あなたのボタンは、コマンドを起動するように設定されているので、ItemCommandはより適切になります。そのイベントが別の名前を持っている

<asp:ListView ... OnItemCommand="lv_MessageSubject_ItemCommand" 

... 

<asp:Button ID="cmd_View" runat="server" CommandName="Highlight" 

... 

protected void lv_MessageSubject_ItemCommand(Object sender, ListViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Highlight") 
    { 
     var ctrl = (HtmlContainerControl)e.Item.FindControl("area"); 
     ctrl.Attributes["style"] = "background-color:Navy; color:White; padding:0px;"; 
    } 
} 

注 - 「選択」はおそらくべき、それはいくつかの組み込み機能を呼び出すという意味でspecialですそれを妨げることはありません。

+0

どうもありがとうございました!! – ZephyrLee

関連する問題