在 ListView C# 中重置页面
Posted
技术标签:
【中文标题】在 ListView C# 中重置页面【英文标题】:reset page in a ListView C# 【发布时间】:2014-02-04 18:29:33 【问题描述】:我与dropdownlist
(医生)预约了listview
。
我为 3 位不同的医生提供了 3 页。当我列出第一个医生姓名并在下一页(我在第 2 页中为医生 1)时,我将 dropdownlist
选择更改为医生 2。
我原以为医生 2 会出现在第 1 页。现在我在医生 2 但第 2 页。
关于如何重置列表视图的分页的任何想法?
这是aspx代码:
<asp:LinqDataSource ID="LinqDataSource2" runat="server"></asp:LinqDataSource>
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="AptDataContext"
EnableUpdate="True" EntityTypeName="" TableName="Appointement"
Where="IsAvailable = True && dateApt >= DateTime.Now && doctorId = Doctor.Id &&
doctorid = 1">
<WhereParameters>
<asp:ControlParameter
Name="doctor_name"
ControlID="DropDownList1"
PropertyName="SelectedValue"
Type="String" />
</WhereParameters>
</asp:LinqDataSource>
<div class="center">
<asp:Label ID="lblDocName" runat="server" Text="Choose a doctor name"> </asp:Label>
<div class="value-right">
<asp:DropDownList ID="DropDownList1" runat="server" Width="180px" AutoPostBack="true"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
DataTextField="Doctor_name" >
</asp:DropDownList>
</div>
</div>
<br/><br/>
<asp:Label ID="lblChooseApt" runat="server" Text="Choose a date"> </asp:Label>
<br/>
<asp:ListView ID="ListView1" runat="server" DataKeyNames="rdvId" DataSourceID="LinqDataSource1"
InsertItemPosition="LastItem" Autopostback="true"
OnPagePropertiesChanged="ListView1_PagePropertiesChanged" >
<AlternatingItemTemplate>
<tr style="">
<td>
<asp:Label ID="doctorNameLabel" runat="server"
Text='<%# Eval("Doctor.Doctor_Name") %>' />
</td>
<td>
<asp:Label ID="dateAptLabel" runat="server" Text='<%# Eval("dateApt",
"0:dd/MM/yyyy") %>' />
</td>
<td>
<asp:Label ID="houreAptLabel" runat="server" Text='<%# Eval("houreApt"
, @"0:hh\:mm") %>' />
</td>
<td>
<asp:CheckBox id="MyCheckBox" runat="server"
value='<%# Eval("aptId") %>'
AutoPostBack="true"
OnCheckedChanged="Check_Clicked" />
</td>
<asp:HiddenField ID="doctorIdLabel" runat="server" Value='<%# Eval("doctorId") %>' />
</tr>
</AlternatingItemTemplate>
<tr runat="server">
<td runat="server" style="">
<asp:DataPager ID="DataPager1" runat="server" Autopostback="true" >
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True"
ShowLastPageButton="True" />
</Fields>
</asp:DataPager>
</td>
</tr>
这是我放在page_load代码后面的代码。 我们如何捕获这个事件发生 DropDownList1_SelectedIndexChanged(object sender, EventArgs e) ?
if (IsPostBack && indexChanged) <== I need to know how to trap the
DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
DataPager pgr = ListView1.FindControl("DataPager1") as DataPager;
if (pgr != null && ListView1.Items.Count != pgr.TotalRowCount)
pgr.SetPageProperties(0, pgr.MaximumRows, false);
bIndexDdlChanged = false;
【问题讨论】:
看看这个***.com/questions/2849449/… @Deependra Mehrotra 我检查了您提供的链接,我的问题是我不明白如何在 asp:Datapager 内的 .aspx 页面中设置 MyPager。你有什么想法吗? DataPager1.SelectedIndex(SelectedPage) = 0?? @Marciano.Andrade 你知道如何指示这个事件是否发生 DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 每次我进去时我都需要一个指标,这样我就可以在 page_load 中使用这个指标来知道我是否需要重置页面 【参考方案1】:这是我解决此问题的方法:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
int indexDdl = DropDownList1.SelectedIndex;
indexDdl++;
Session["doctorId"] = indexDdl;
if (IsPostBack) <==new code added
DataPager pgr = ListView1.FindControl("DataPager1") as DataPager; <==new code added
if (pgr != null && ListView1.Items.Count != pgr.TotalRowCount) <==new code added
pgr.SetPageProperties(0, pgr.MaximumRows, false); <==new code added
ListAppointement(indexDdl);
【讨论】:
以上是关于在 ListView C# 中重置页面的主要内容,如果未能解决你的问题,请参考以下文章
C# winform ListView+CheckBox的做法
LinearLayout 中的 ViewPager ListView。滑动 ViewPager 应该滑动整个页面吗?