我有一个带有下拉列表选项的列表视图。我第一次进入listview并使用listview底部的NEXT按钮,它显示一切都很好。如果我将下拉列表更改为另一个选项,则第一次显示列表正常但如果我使用了NEXT按钮则不会刷新列表视图。我正在使用带有UpdatePanel的AJAX。我看到列表视图已正确填充(apt.Count()返回20条记录)。知道什么可能是错的吗?
我想我需要刷新或类似的东西可能是由于AJAX?
以下是代码behing
private void ListApt(int iIndexDdl)
{
using (AptDataContext db = new AptDataContext())
{
var apt = from Apt in db.Apt
join Doctor in db.Doctor on Apt.DoctorId equals Doctor.Id
where Apt.doctorId == iIndexDdl && Apt.IsAvailable == true &&
Apt.dateApt >= DateTime.Now
select Apt
;
ListView1.DataSourceID = null;
ListView1.DataSource = apt;
int numberOfRecords = apt.Count();
if (numberOfRecords == 0)
{
lblMessage.Text = "No Appointement are available";
}
ListView1.DataBind();
};
}
这是按钮在.aspx
中定义的位置 <asp:DataPager ID="DataPager1" runat="server" >
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True"
ShowLastPageButton="True" />
</Fields>
</asp:DataPager>
答案 0 :(得分:2)
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:ListView ID="ListViewPersons" runat="server" ItemPlaceholderID="ProductItem">
<ItemTemplate>
<asp:Label runat="server" ID="LabelEmail" Text='<%# Eval("Email") %>'></asp:Label>
<asp:Label runat="server" ID="LabelName" Text='<%# Eval("Name") %>'></asp:Label>
</ItemTemplate>
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="ProductItem"></asp:PlaceHolder>
</LayoutTemplate>
<ItemSeparatorTemplate>
<hr />
</ItemSeparatorTemplate>
</asp:ListView>
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListViewPersons"
onprerender="DataPager1_PreRender">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowLastPageButton="True" />
</Fields>
</asp:DataPager>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ListViewPersons" />
</Triggers>
</asp:UpdatePanel>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindListView();
}
}
private void BindListView()
{
List<Person> persons = new List<Person>();
for (int i = 0; i < 30; i++)
{
Person aPerson =new Person();
aPerson.Email = "Email" + i.ToString();
aPerson.Name = "Name" + i.ToString();
persons.Add(aPerson);
}
ListViewPersons.DataSource = persons;
ListViewPersons.DataBind();
}
public class Person
{
public string Name { get; set; }
public string Email { get; set; }
}
protected void DataPager1_PreRender(object sender, EventArgs e)
{
BindListView();
}
http://www.codeproject.com/Questions/513399/UpdateplusPanelplusdataplusisplusnotplusrefreshing
答案 1 :(得分:1)
1)您确定要检索更多记录吗?也许你在列表的最后。
2)在浏览器上使用调试模式。在从下拉列表中第一次刷新之后,可能会抛出一个错误,这将导致您的AJAX软化。
3)注意更新面板中的控件,以及哪些控件是更新的触发器。
你也应该挑衅地发布你的标记代码。问题很可能出在你的标记或控件和事件的连线上。