protected void pnlFriends_Click(object sender, EventArgs e)
{
ClickablePanel pnlFriends = sender as ClickablePanel;
lvFriends.SelectedIndex = ((ListViewItem)pnlFriends.Parent).DisplayIndex;
}
未达到以下条件:
protected void lvFriends_SelectedIndexChanging(object sender,
ListViewSelectEventArgs e)
{
GetConversation(lvFriends.DataKeys[e.NewSelectedIndex][0].ToString());
}
为什么?我曾经使用.Selected = true来使用WinForms。但是,看起来绝对没有办法动态触发ListViewSelectedIndexChanging事件。
任何想法我怎样才能让它正常工作?谢谢。
我正在尝试选择ListView项目,以及索引更改时。我试图在同一页面上填充第二个ListView。我需要在索引发生变化时处理第一个事件。
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);
}
^完美无瑕地工作。
我想不知怎的,。SelectItem
触发ListViewSelectEventArgs
我们必须通过设置.SelectedIndex = e.NewSelectedIndex;
来处理它,然后重新绑定数据以正确显示所选项目。
现在我可以用上面的代码做的就是调用它 - > lvFriends.SelectItem(int);
答案 0 :(得分:1)
这与ASP.Net页面生命周期业务有关。 “lvFriends_SelectedIndexChanging”事件和“pnlFriends_Click”事件发生在同一生命周期中。基本上在回发后,asp.net会检查lvlFriends索引是否已更改。事实并非如此,它继续发布其他事件。现在它处于生命周期的下一个阶段。它正在处理“pnlFriends_Click”事件。它为它进行处理。如果碰巧做了改变lvlFriends索引的事情,它就不会被捕获。在处理来自一组控件的事件后,ASP.Net页面生命周期不会返回,以查看该处理是否导致其他控件上的事件。
但是要实现你想要的,而不是改变索引或期望触发事件。您必须明确调用该方法。
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});
}
答案 1 :(得分:-1)
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);
}
另外,请检查原始问题! ;)