2009-06-13 112 views
1

我在页面中有以下div,但按钮呈现在输入下方,尽管在我想要它们的同一'行'中有足够的空间给它们。我如何强制这个'同一行'的问题?保持元素在同一水平'行'

<div id="pageHeader" style="text-align: right;"> 
    <asp:TextBox ID="searchInput" runat="server" CssClass="searchTerm"> 
    </asp:TextBox> 
    <asp:Button ID="searchButton" runat="server" CssClass="btn" Text="Search" onclick="searchButton_Click" /> 
</div> 

新:这个问题是由于我使用Telerik的阿贾克斯在这里,并已列入searchInput在我RadAjaxManager的AJAX设置的更新的控制。此控件默认情况下会将所有更新后的控件封装在块显示的div中。我不得不覆盖这个默认如下:

protected void ajaxManager_AjaxSettingCreating(object sender, Telerik.Web.UI.AjaxSettingCreatingEventArgs e) 
{ 
    e.UpdatePanel.RenderMode = UpdatePanelRenderMode.Inline; 
} 
+0

thx,这是值得的:) – 2009-06-16 10:15:54

回答

3

默认情况下,输入元素渲染显示:内联,这使得它们出现在线路:)不过,你的情况看来,事情是打破了默认行为,所以你需要明确指定你想要显示:inline而不是display:block。所以,总结一下:

您可以使用下面的CSS来获得所需的视图:

#pageHeader input 
{ 
    display:inline !important; 
} 
+0

这是telerik radAjaxManager'打破'的默认行为。看到我对OP的补充。 – ProfK 2009-06-15 20:33:56

0

谢谢你这么多的代码。它效果很好。 Telerik Ajaxmanager是问题所在。

protected void ajaxManager_AjaxSettingCreating(object sender, Telerik.Web.UI.AjaxSettingCreatingEventArgs e) 
{ 
    e.UpdatePanel.RenderMode = UpdatePanelRenderMode.Inline; 
} 
0

你也可以改变你现有的div是一个asp:小组,得到由RadAjaxManager(而不是个人控制(S))更新:

<asp:Panel id="pageHeader" runat="server" CssClass="righty"> 
    <asp:TextBox ID="searchInput" runat="server" CssClass="searchTerm"> 
    </asp:TextBox> 
    <asp:Button ID="searchButton" runat="server" CssClass="btn" Text="Search" onclick="searchButton_Click" /> 

这可能导致额外的控制被重新发布 - 所以性能稍差 - 但我认为它有点提高了可读性。