Asp.net PagedDataSource和UpdatePanel don';我们不能一起工作
PagedDataSource和UpdatePanel有问题。当我在按钮中使用AsyncPostBackTrigger时,页面中的分页将消失 以下是asp代码:Asp.net PagedDataSource和UpdatePanel don';我们不能一起工作,asp.net,updatepanel,datalist,Asp.net,Updatepanel,Datalist,PagedDataSource和UpdatePanel有问题。当我在按钮中使用AsyncPostBackTrigger时,页面中的分页将消失 以下是asp代码: <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:DataList ID="DataListGallery"
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:DataList ID="DataListGallery" runat="server" RepeatColumns="3" RepeatDirection="Horizontal" OnItemDataBound="DataListGallery_ItemDataBound" >
<ItemTemplate>
<asp:HiddenField ID="FieldPhoneId" Value='<%# Eval("Phone_InfoID") %>' runat="server" />
<asp:ImageButton ID="btnShop" OnClick="btnShop_Click" ImageUrl="images/cart.gif" CssClass="left_bt_item" title="header=[خريد] body=[ ] fade=[on]" runat="server" />
<asp:ImageButton CssClass="left_bt_item" title="header=[مورد علاقه] body=[ ] fade=[on]" OnClick="btnFavourite_Click" ID="btnFavourite" ImageUrl="images/unfav.png" runat="server" />
.
.
.
和一个带有AsyncPostBackTrigger的按钮:
protected void btnFavourite_Click(object sender, ImageClickEventArgs e)
{
// Access to real ImageButton from repeater
ImageButton ib = (ImageButton)sender;
HiddenField hf = (HiddenField)ib.Parent.FindControl("FieldPhoneId");
Favourite objFav = new Favourite(Convert.ToInt32(hf.Value));
Guid userId = objFav.GetUserIdFromUserName(User.Identity.Name);
using (var context = new MobileGalleryEntities())
{
try
{
// Delete favorited
if (objFav.HadFavorited(User.Identity.Name))
{
int phoneInfoId = Convert.ToInt32(Convert.ToInt32(hf.Value));
// Remove favourite
objFav.RemoveFromFavourite(userId);
// Change image
ib.ImageUrl = "~/images/unfav.png";
}
// Add favorite
else
{
// Add phone
objFav.AddToFavourite(userId);
// Change image
ib.ImageUrl = "~/images/favs.gif";
}
}
catch (Exception ex)
{
}
}
}
以下是数据绑定事件:
protected void DataListGallery_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (User.Identity.IsAuthenticated)
{
try
{
// Get LoginView for access to ImageButton on it.
var loginView = e.Item.FindControl("LoginView1");
ImageButton btnCom = (ImageButton)e.Item.FindControl("btnCompare");
//ImageButton btnFav = (ImageButton)loginView.FindControl("btnFavourite");
ImageButton btnFav = (ImageButton)e.Item.FindControl("btnFavourite");
btnFav.Visible = true;
ImageButton btnShop = (ImageButton)e.Item.FindControl("btnShop");
btnShop.Visible = true;
//HiddenField hf = (HiddenField)loginView.FindControl("FieldPhoneId");
HiddenField hf = (HiddenField)e.Item.FindControl("FieldPhoneId");
List<int> listFav = (List<int>)Session["Fav"];
if (listFav.Contains(int.Parse(hf.Value)))
btnFav.ImageUrl = "~/images/favs.gif";
}
catch(Exception ex)
{
}
}
else
{
ImageButton btnFav = (ImageButton)e.Item.FindControl("btnFavourite");
btnFav.Visible = false;
ImageButton btnShop = (ImageButton)e.Item.FindControl("btnShop");
btnShop.Visible = false;
}
}
受保护的无效DataListGallery\u ItemDataBound(对象发送方,DataListItemEventArgs e)
{
if(User.Identity.IsAuthenticated)
{
尝试
{
//获取LoginView以访问其上的ImageButton。
var loginView=e.Item.FindControl(“loginView”);
ImageButton btnCom=(ImageButton)e.Item.FindControl(“btnCompare”);
//ImageButton btnFav=(ImageButton)loginView.FindControl(“btnFavourite”);
ImageButton btnFav=(ImageButton)e.Item.FindControl(“btnFavourite”);
btnFav.Visible=true;
ImageButton btnShop=(ImageButton)e.Item.FindControl(“btnShop”);
btnShop.Visible=true;
//HiddenField hf=(HiddenField)loginView.FindControl(“FieldPhoneId”);
HiddenField hf=(HiddenField)e.Item.FindControl(“FieldPhoneId”);
List listFav=(List)会话[“Fav”];
if(listFav.Contains(int.Parse(hf.Value)))
btnFav.ImageUrl=“~/images/favs.gif”;
}
捕获(例外情况除外)
{
}
}
其他的
{
ImageButton btnFav=(ImageButton)e.Item.FindControl(“btnFavourite”);
btnFav.Visible=false;
ImageButton btnShop=(ImageButton)e.Item.FindControl(“btnShop”);
btnShop.Visible=false;
}
}
当我启动btnFavourite按钮时,页面中的分页将被取消。但当我使用FullPostBack时,它是有效的。
请注意,当我使用FullPostBack时,我会重新创建控件,例如分页控件和其他控件,但当我使用AsyncPostBackTrigger时,我不会重新创建控件
我在干什么?
谢谢。我必须重新创建与FullPostBack相同的控件
protected void DataListGallery_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (User.Identity.IsAuthenticated)
{
try
{
// Get LoginView for access to ImageButton on it.
var loginView = e.Item.FindControl("LoginView1");
ImageButton btnCom = (ImageButton)e.Item.FindControl("btnCompare");
//ImageButton btnFav = (ImageButton)loginView.FindControl("btnFavourite");
ImageButton btnFav = (ImageButton)e.Item.FindControl("btnFavourite");
btnFav.Visible = true;
ImageButton btnShop = (ImageButton)e.Item.FindControl("btnShop");
btnShop.Visible = true;
//HiddenField hf = (HiddenField)loginView.FindControl("FieldPhoneId");
HiddenField hf = (HiddenField)e.Item.FindControl("FieldPhoneId");
List<int> listFav = (List<int>)Session["Fav"];
if (listFav.Contains(int.Parse(hf.Value)))
btnFav.ImageUrl = "~/images/favs.gif";
}
catch(Exception ex)
{
}
}
else
{
ImageButton btnFav = (ImageButton)e.Item.FindControl("btnFavourite");
btnFav.Visible = false;
ImageButton btnShop = (ImageButton)e.Item.FindControl("btnShop");
btnShop.Visible = false;
}
}