当我在datapager中更改页面时,它会导致完全回发,即使数据采集器工作异常,也不知道是什么原因。通过abnormaaly我的意思是某些时候数据显示有时,但是 以下是我在c#中的代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindListView();
}
}
protected void StudentListView_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
BindListView();
}
private void BindListView()
{
StudentListView.DataSource = StudentDataSource;
StudentListView.DataBind();
}
protected void StudentDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
e.Arguments.MaximumRows = StudentListDataPager.MaximumRows;
e.Arguments.StartRowIndex = StudentListDataPager.StartRowIndex;
}
以下是我的标记
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate> <
<asp:DropDownList runat="server" ID="BatchDropDownList" AutoPostBack="True">
<asp:ListItem Text="Batch 1" Value="1" Selected="True" />
<asp:ListItem Text="Batch 2" Value="2" />
</asp:DropDownList>
<asp:ListView ID="StudentListView" runat="server"
ItemPlaceholderID="ListViewContent"
EnableViewState="false"
onpagepropertieschanging="StudentListView_PagePropertiesChanging">
<LayoutTemplate>
<table style="width:100%">
<thead>
<tr>
<th class="align-left"><strong>Name</strong></th>
<th class="align-left"><strong>MobNo</strong></th>
</tr>
</thead>
<tbody runat="server" id="ListViewContent">
</tbody>
<tfoot>
<tr>
<td colspan="3">
</td>
</tr>
</tfoot>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td style="width:70%;"><%# Eval("FirstName") %> <%# Eval("LastName") %></td>
<td style="width:30%;"><%# Eval("MobNo") %></td>
</tr>
</ItemTemplate>
</asp:ListView>
<asp:DataPager ID="StudentListDataPager" runat="server" PageSize="5" PagedControlID="StudentListView">
<Fields>
<asp:NumericPagerField />
</Fields>
</asp:DataPager>
<asp:ObjectDataSource ID="StudentDataSource" runat="server"
SelectMethod="GetStudentListBatchWise" SelectCountMethod="StudentCount"
TypeName="SCERPCommonUtil.Student" EnablePaging="True"
onselecting="StudentDataSource_Selecting">
<SelectParameters>
<asp:ControlParameter Name="batchId" ControlID="BatchDropDownList" PropertyName="SelectedValue" />
</SelectParameters>
</asp:ObjectDataSource>
</ContentTemplate>
</asp:UpdatePanel>
如果我犯了任何错误,请告诉我。
P.S。 :请不要指出任何stackoverflow问题,因为我已经阅读了所有这些问题,并且没有一个是我的要求所特有的,
我面临的最重要的问题是datapager正在提供完整的回发,即使将datapager
置于updatepanel
内也会发生相同的事情。
答案 0 :(得分:0)
亲爱的,您已将updatemode指定为conditional.But您已提及更新面板的任何触发器。 将AsyncPostBackTrigger添加到更新面板
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="StudentListView" EventName="PagePropertiesChanging" />
</Triggers>
<ContentTemplate>
</asp:UpdatePanel>
来自MSDN:
If the UpdateMode property is set to Conditional, and one of the following conditions occurs:
更新答案: 为什么你没有在listview中提到DataSourceID属性???
<asp:ListView ID="StudentListView" runat="server" DataSourceID ="StudentDataSource"
并且您将代码中的列表视图绑定为
private void BindListView()
{
StudentListView.DataSource = StudentDataSource; //also it should be DataSourceID
StudentListView.DataBind();
}
您正在使用对象数据源,并且在您的代码中,您将其绑定为错误的数据源。将它绑定为数据源ID或简单提及listview的datasourceID属性,然后您不必在后面的代码中绑定它。
答案 1 :(得分:-1)
我认为 - 有人来看 -
我正在使用<form runat="server">...<form>
标记,其中包含所有这个listview,datapager代码。当我为表单标记分配了唯一的id
属性时,一切都开始正常工作
虽然我不明白这种行为的原因。