ASP.NET C#WebForms ListView在单击时高亮显示项目

ASP.NET C#WebForms ListView在单击时高亮显示项目,c#,asp.net,listview,webforms,highlighting,C#,Asp.net,Listview,Webforms,Highlighting,我正在尝试突出显示已单击(选定)的ListView项目。但是,当前发生的情况是,最后一个选定的项目将被高亮显示 以下是我的asp.net代码: <asp:ListView ID="UsersListView" AutoPostBack="true" runat="server" OnSelectedIndexChanging="UsersListView_SelectedIndexChanging" OnSelectedIndexChanged="UsersListView_Selecte

我正在尝试突出显示已单击(选定)的ListView项目。但是,当前发生的情况是,最后一个选定的项目将被高亮显示

以下是我的asp.net代码:

<asp:ListView ID="UsersListView" AutoPostBack="true" runat="server" OnSelectedIndexChanging="UsersListView_SelectedIndexChanging" OnSelectedIndexChanged="UsersListView_SelectedIndexChanged" >
        <LayoutTemplate>         
            <table id="itemPlaceholderContainer" runat="server" border="0" style="">
                <tr>
                    <td id="itemPlaceholder" runat="server">
                    </td>
                </tr>
            </table>     
        </LayoutTemplate>
        <ItemTemplate>
            <tr runat="server">
                <td>
                    <asp:LinkButton ID="UserNameLinkButton" CommandName="Select" runat="server" Text='<%# Container.DataItem %>'/>
                </td>
            </tr>
        </ItemTemplate>
        <SelectedItemTemplate>
            <tr runat="server" style="background-color: #336699;">
                <td>
                    <asp:LinkButton ID="UserNameLinkButton" CommandName="Select" runat="server" Text='<%# Container.DataItem %>' BackgroundColor="#336699" ForeColor="White" />
                </td>
            </tr>
        </SelectedItemTemplate>
    </asp:ListView>

下面是我的C#代码:

protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
            List<string> users = new List<string>()
        {
            "Gary",
            "Joe",
            "Brian"
        };
            UsersListView.DataSource = users;
            UsersListView.DataBind();
        }
    }

    protected void UsersListView_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
    {
        UsersListView.SelectedIndex = e.NewSelectedIndex;
    }

    protected void UsersListView_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!Page.IsPostBack)
{
列表用户=新列表()
{
“加里”,
“乔”,
“布莱恩”
};
UsersListView.DataSource=用户;
UsersListView.DataBind();
}
}
受保护的无效用户列表视图\u SelectedIndexChangeing(对象发送者,列表视图SelectEventArgs e)
{
UsersListView.SelectedIndex=e.NewsSelectedIndex;
}
受保护的无效用户列表视图\u SelectedIndexChanged(对象发送方,事件参数e)
{
}

感谢您的帮助。

在选择项目时,以及在您的情况下,当链接按钮不高亮显示时,您必须为链接按钮使用OnCommand,或者使用ListViewItemCommand并将Item.DisplayIndex作为参数传递给linkButton属性CommandArgument,因为您的重点是选择not over linkButton。服务器上的代码也是如此突出显示项目按钮的侧面

Aspx

<asp:ListView ID="UsersListView" AutoPostBack="true" runat="server" OnSelectedIndexChanged="UsersListView_SelectedIndexChanged" OnItemCommand="UsersListView_ItemCommand" OnSelectedIndexChanging="UsersListView_SelectedIndexChanging">
    <LayoutTemplate>         
        <table id="itemPlaceholderContainer" runat="server" border="0" style="">
            <tr>
                <td id="itemPlaceholder" runat="server">
                </td>
            </tr>
        </table>     
    </LayoutTemplate>
    <ItemTemplate>
        <tr runat="server">
            <td>
                <asp:LinkButton ID="UserNameLinkButton" CommandName="Select" OnCommand="UserNameLinkButton_Command" CommandArgument="<%# Container.DisplayIndex %>" runat="server" Text='<%# Container.DataItem %>'/>
            </td>
        </tr>
    </ItemTemplate>
    <SelectedItemTemplate>
        <tr runat="server">
            <td>
                <asp:LinkButton ID="UserNameLinkButton" CommandName="Select"  CommandArgument="<%# Container.DisplayIndex %>" runat="server" Text='<%# Container.DataItem %>' ForeColor="White" />
            </td>
        </tr>
    </SelectedItemTemplate>
</asp:ListView>
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<string> users = new List<string>()
    {
        "Gary",
        "Joe",
        "Brian"
    };
        UsersListView.DataSource = users;
        UsersListView.DataBind();
    }
}
int selectedIndex=0;
protected void UsersListView_ItemCommand(object sender, ListViewCommandEventArgs e)
{

     foreach(var item in UsersListView.Items)
     {
         LinkButton reset=item.FindControl("UserNameLinkButton") as LinkButton;
         reset.BackColor = System.Drawing.Color.White;
         reset.ForeColor = System.Drawing.Color.Blue;
     }
     LinkButton linkButton = (e.Item.FindControl("UserNameLinkButton")) as LinkButton;
     linkButton.BackColor = System.Drawing.ColorTranslator.FromHtml("#336699");
     linkButton.ForeColor = System.Drawing.Color.White;

}
protected void UsersListView_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
{

}
protected void UsersListView_SelectedIndexChanged(object sender, EventArgs e)
{

}
protected void UserNameLinkButton_Command(object sender, CommandEventArgs e)
{
    //you can also do work here for when one of link button give command.(clicked)
}