2009-06-13 109 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" /> 

這可能導致額外的控制被重新發布 - 所以性能稍差 - 但我認爲它有點提高了可讀性。