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);
}