C# ASP.NET ListView无法动态激发SelectedIndexChanged

C# ASP.NET ListView无法动态激发SelectedIndexChanged,c#,asp.net,events,listview,listviewitem,C#,Asp.net,Events,Listview,Listviewitem,不符合以下条件: protected void pnlFriends_Click(object sender, EventArgs e) { ClickablePanel pnlFriends = sender as ClickablePanel; lvFriends.SelectedIndex = ((ListViewItem)pnlFriends.Parent).DisplayIndex; } 为什么?我曾经使用.Selected=true在WinForms中实现这一点;但

不符合以下条件:

protected void pnlFriends_Click(object sender, EventArgs e)
{
    ClickablePanel pnlFriends = sender as ClickablePanel;
    lvFriends.SelectedIndex = ((ListViewItem)pnlFriends.Parent).DisplayIndex;
}
为什么?我曾经使用.Selected=true在WinForms中实现这一点;但是,看起来绝对没有办法动态触发ListViewSelectedIndexChanged事件

有没有办法让它正常工作?多谢各位

编辑 我正在尝试选择一个ListView项目,当索引更改时。我试图在同一页上填充第二个ListView。当索引更改时,我需要处理第一个事件

更新(已解决) ^工作完美无瑕。 我猜,.
SelectItem
会触发
ListViewSelectEventArgs
,我们必须通过设置
来处理它
然后重新绑定数据以正确显示所选项目


现在我能用上面的代码做的就是调用这个->
lvFriends.SelectItem(int)

这与ASP.Net页面生命周期业务有关。“lvFriends\u SelectedIndexChanging”事件和“pnlFriends\u Click”事件发生在同一生命周期中。基本上在回发之后,asp.net会检查lvlFriends索引是否已更改。它没有,所以它将继续进行发回的其余事件。现在,它将进入生命周期的下一部分。它正在处理“pnlFriends_Click”事件。它为它做处理。如果它碰巧做了一些改变lvlFriends索引的事情,它不会被捕获。ASP.Net页面生命周期在处理一组控件中的事件后不会返回,以查看该处理是否导致其他控件上的事件

但是要实现您想要的,而不是更改索引或期望触发事件。您必须显式调用该方法

protected void lvFriends_SelectedIndexChanging(object sender,  ListViewSelectEventArgs e)
{
    lvFriends.SelectedIndex = e.NewSelectedIndex;
    lvFriends.DataSource = Friendship.GetFriends(User.Identity.Name, false);
    lvFriends.DataBind();
    GetConversation(lvFriends.DataKeys[e.NewSelectedIndex][0].ToString());
}

protected void pnlFriends_Click(object sender, EventArgs e)
{
    ClickablePanel pnlFriends = sender as ClickablePanel;
    lvFriends.SelectItem(((ListViewItem)pnlFriends.Parent).DisplayIndex);
}

另外,请检查原始问题!;)

您好,我用更新的问题中显示的代码解决了问题。如果你有时间,请检查一下,让我知道你的想法。谢谢你的回答:)很难说。你似乎每次都在重新绑定你的好友列表。不确定这是否是个好主意,这取决于GetFriends操作的成本。在原始代码中,将GetConversations()方法行移到pnlFriends\u Click方法中如何?那不行吗?
protected void lvFriends_SelectedIndexChanging(object sender,  ListViewSelectEventArgs e)
{
    lvFriends.SelectedIndex = e.NewSelectedIndex;
    lvFriends.DataSource = Friendship.GetFriends(User.Identity.Name, false);
    lvFriends.DataBind();
    GetConversation(lvFriends.DataKeys[e.NewSelectedIndex][0].ToString());
}

protected void pnlFriends_Click(object sender, EventArgs e)
{
    ClickablePanel pnlFriends = sender as ClickablePanel;
    lvFriends.SelectItem(((ListViewItem)pnlFriends.Parent).DisplayIndex);
}
protected void pnlFriends_Click(object sender, EventArgs e)
{
    ClickablePanel pnlFriends = sender as ClickablePanel;
    lvFriends.SelectedIndex = ((ListViewItem)pnlFriends.Parent).DisplayIndex;
    lvFriends_SelectedIndexChanging(lvFriends, new ListViewSelectEventArgs() {// TODO: build the event args object properly});
}
protected void lvFriends_SelectedIndexChanging(object sender,  ListViewSelectEventArgs e)
{
    lvFriends.SelectedIndex = e.NewSelectedIndex;
    lvFriends.DataSource = Friendship.GetFriends(User.Identity.Name, false);
    lvFriends.DataBind();
    GetConversation(lvFriends.DataKeys[e.NewSelectedIndex][0].ToString());
}

protected void pnlFriends_Click(object sender, EventArgs e)
{
    ClickablePanel pnlFriends = sender as ClickablePanel;
    lvFriends.SelectItem(((ListViewItem)pnlFriends.Parent).DisplayIndex);
}