2011-04-13 84 views
27

我在UpdatePanel的ListView中有一个LinkBut​​ton。我希望按钮(以及其中的任何一个)引起部分回发,但它们会导致整页回发。在UpdatePanel的ListView中的LinkBut​​ton导致完整的回发

<asp:UpdatePanel ID="upOutcomes" UpdateMode="Conditional" runat="server"> 
    <ContentTemplate> 
     <asp:ListView ID="lvTargets" runat="server" onitemdatabound="lvTargets_ItemDataBound"> 
     <ItemTemplate> 
      <asp:LinkButton ID="lnkAddTarget" CssClass="lo" Text='<%# Eval("Title") + " <b>" + Eval("Level") + Eval("SubLevel") + "</b>" %>' runat="server"></asp:LinkButton> 
     </ItemTemplate> 
     </asp:ListView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

我发现了另一个计算器后,其建议增加此:

protected void lvTargets_ItemDataBound(object sender, ListViewItemEventArgs e) { 
    var lb = e.Item.FindControl("lnkAddTarget") as LinkButton; 
    tsm.RegisterAsyncPostBackControl(lb); // ToolkitScriptManager 
} 

这还没有做出区别...

还有一些其他类似的帖子太多,但我找不到解决方案!有任何想法吗?

+0

刚试过了,谢谢。虽然没有运气。 :(我需要它有条件地更新 – James 2011-04-13 17:02:40

+0

尝试使用将更新面板的控件填充集合,即使控件位于面板内 – 2011-04-13 17:20:58

+0

我该如何做?'lnkAddTarget'在ListView外部是不可见的。谢谢。 – James 2011-04-13 17:26:59

回答

38

ASP.NET 4中的ClientIDMode设置允许您指定ASP.NET如何为HTML元素生成id属性。

在以前的ASP.NET版本(即pre 4)中,默认行为等同于ClientIDMode的AutoID设置。但是,现在默认设置为可预测

Read Microsoft Article

的AutoID为此需要的,因为脚本经理希望在.NET之前的版本要生成的HTML控件的方式。

+1

谢谢。这让我疯狂了半天。据我所知,我必须在链接按钮上添加一个ID,并在页面指令中添加AutoID。 – Larry 2011-05-27 08:11:23

+1

半天?我一直在为此工作了一个多星期..我确信这是我的UpdatePanel或其他一些古怪的控制我正在使用。原来,这只是我的linkbutton .. gaah ... – Rob 2011-12-12 19:56:16

+1

谢谢你,我的好人。我从一个DataList切换到一个ListView,并不能找出为什么我的UpdatePanel突然停止工作 – Dogoku 2012-08-24 07:26:37

0

尝试增加CommandNameCommandArgument属性和OnCommand事件处理程序到您的LinkBut​​ton这样的:

<asp:LinkButton CommandName='test' CommandArgument='<%# Eval("Title") %>' ID="lnkAddTarget" runat="server" OnCommand="LinkButtonCommandEventHandler" /> 

或者 - 添加OnItemCommand处理整个的ListView。

+0

感谢您的想法,但这并没有什么区别。 – James 2011-04-13 21:19:06

0

我解决了这个问题,通过在适用页面的页面指令上设置ClientIDMode =“AutoID”,例如:<%@ Page Title="" ClientIDMode="AutoID" Language="C#"%>,从而解决了我之前在ListView中导致完全回发的ASP链接按钮的问题。但是,这可能要求客户端代码(Jquery,Javascript)上的任何ASP控件通过浏览器源代码(我使用Firefox中的Firebug获取名称)中的全名引用。例如,这个jQuery功能$("#ContentPlaceHolder1_btnCancelReferCustomer").click(function() { $("#divRefer").hide({ effect: "slide", duration: 200 }); return false; }); 改为这个(请注意,选择ASP的按钮名称变更): $("#ctl00_ContentPlaceHolder1_btnCancelReferCustomer").click(function() { $("#divRefer").hide({ effect: "slide", duration: 200 }); return false; });

0

我通过设置解决了这个问题:的ClientIDMode =“自动识别”关于适用页的页面指令像这样:<%@ Page Title =“”ClientIDMode =“AutoID”Language =“C#”%>

相关问题