快速搜索后,我找不到这个看似简单的事情的答案.
如何在Asp.Net ListView中手动选择项?
我有一个SelectedItemTemplate,但我不想使用asp:button或asp:LinkButton来选择一个项目.我希望它可以通过URL完成.例如,像QueryString一样.
我想象的方式是在ItemDataBound上,检查条件,然后将其设置为selected,如果为true,但我该怎么做?
例如:
protected void lv_ItemDataBound(object sender, ListViewItemEventArgs e) {
using (ListViewDataItem dataItem = (ListViewDataItem)e.Item) {
if (dataItem != null) {
if( /* item select condition */ ) {
// What do I do here to Set this Item to be Selected?
// edit: Here's the solution I'm using :
((ListView)sender).SelectedIndex = dataItem.DisplayIndex;
// Note, I get here and it gets set
// but the SelectedItemTemplate isn't applied!!!
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我确定这是一行或两行代码.
编辑:我已经更新了代码以反映解决方案,似乎我可以选择ListView的SelectedItemIndex,但是,它实际上并没有呈现SelectedItemTemplate.我不知道我是否应该在ItemDataBound事件中执行此操作,如下所示.
我有一个ScrollViewer:
<ScrollViewer Width="160"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Hidden"
Height="324" Canvas.Top="0"
BorderThickness="0" Padding="0">
<ListBox x:Name="Snapshots" SelectionChanged="Snapshots_SelectionChanged"
Padding="0" Background="#FFF0F0F0"
BorderBrush="{x:Null}" VerticalAlignment="Top"
SelectionMode="Single">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding imageSource}"
Margin="5" Stretch="UniformToFill"
Width="120" Opacity="0.2"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"
VerticalAlignment="Top" HorizontalAlignment="Center"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ListBox>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
我该如何实现这些功能: