2013-02-26 58 views
1

我需要将焦点设置为我已动态添加的标签。这里是我的AJAX面板在AJAX更新面板中设置动态添加控件的焦点

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:Panel ID="pnlProgress" runat="server" class="summaryBox" 
        Style="width: 650px; height: 225px" ScrollBars="Auto"> 
      <asp:PlaceHolder ID="plcHolder" runat="server"></asp:PlaceHolder> 
      <asp:Button ID="btnTrigger" runat="server" OnClick="Button1_Click" 
         Style="visibility: hidden" /></asp:Panel> 
    </ContentTemplate> 
</asp:UpdatePanel> 

这里是我的C#代码

label.Text = "SomeText"; 
label.ID = "lblMessage" + messageNumber; 
if (heading) 
{ 
    label.Attributes.Add("style", "font-weight: bold;")     
} 
UpdatePanel1.ContentTemplateContainer.Controls.Add(label); 
plcHolder.Controls.Add(label); 

我试图SetFocus(label)label.Attributes后,但没有奏效。我无法在JScript中执行此操作,因为我无法动态创建任何标签上的GetElement。任何线索?我需要关注的面板上有滚动条,我希望它滚动到最后一个动态添加的标签

+0

为什么你不能通过javascript?您可以在动态添加控件后立即从服务器端调用JavaScript方法SetFocus(id) – 2013-02-26 12:36:25

+0

您应该标记帮助他人的正确答案,我看到所有问题没有标记正确答案,但是您评论说代码正常工作。请帮助社区标记正确的答案。 – RedDevil79 2013-03-01 12:20:27

回答

1

您可以直接拨打电话像标签集中:

label.Text = "SomeText"; 
    label.ID = "lblMessage" + messageNumber; 
    if (heading) 
    { 
     label.Attributes.Add("style", "font-weight: bold;")     
    } 
    UpdatePanel1.ContentTemplateContainer.Controls.Add(label); 
    plcHolder.Controls.Add(label); 
    label.Focus(); 

但是,如果你想要的是滚动到元素然后标签将不起作用,只有输入字段我相信。您可以使用文本框和样式来看起来像一个标签。

+0

感谢红魔的文本框和样式修复了它 – Adam 2013-03-01 10:24:23