2010-02-11 6 views
9

ich in einer Tabelle den Code unten bin mit:Warum ein asp: Dropdownlist und ein asp: TextBox der gleichen Breite erscheinen unterschiedlich

<tr> 
    <td>User Language:</td> 
    <td> 
     <asp:DropDownList ID="Language" runat="server" Width="200px"> 
      <asp:ListItem Selected="True">English</asp:ListItem> 
     </asp:DropDownList> 
    </td> 
</tr> 
<tr> 
    <td><span class="important">*</span>Company:</td> 
    <td><asp:TextBox ID="Company" runat="server" width="200px" /></td> 
</tr> 

Wenn der Code auf der Website erscheint die <asp:Textbox> Steuerung ist 205px und Die <asp:DropDownList> ist 200px breit. Was verursacht das? Beide sind auf eine Breite von 200px eingestellt.

+0

Welcher Browser? Feuerfuchs? – SLaks

Antwort

18

Da die Textbox 2px Rand und 1px Polsterung an den Seiten hat.

+0

Dies ist die richtige Antwort. – SLaks

+0

Entschuldigung, ich benutze Google Chrome (version: 59.0.3071.86). Wenn ich die Seite inspiziere, sagt es, dass die Breite der Textbox ** 4px ** mehr (204px) als die von DropDownList (200px) ist. (Also sogar 2px + 1px ist 3px, immer noch 1px kurz!) – user3454439

1

Die DropDown-Größe wird in Bezug auf die Größe der Optionen geändert, die Sie darin bereitstellen. Also, wenn Sie längere Optionen haben, werden Sie länger Drop-Down bekommen. Außerdem braucht es mehr Platz für den Pfeil, der die rechte Ecke ist.

0

Wenn Sie Daten in die Dropdownliste einfügen, ändert sich die Größe, wenn Sie die width -Eigenschaft nicht festlegen, aber wenn Sie die Breite festlegen, wird die Größe nicht geändert.

1

Nicht ganz ähnlich, aber hier ist eine schnelle Spitze, die Ihnen eine Menge Kopfschmerzen auf die Straße retten:

Niemals ASP: Textbox oder ASP: Dropdownlist

< Textbox runat = server> und < select runat = server> funktioniert in jedem Fall, den Sie jemals brauchen könnten, und sie fügen keine verwirrenden Eigenschaften wie "Breite" hinzu, die nicht ganz richtig funktionieren.

Verwenden Sie echte HTML-Tags mit CSS-Klassen für alles, was Sie tun, und fügen Sie nur runat = server zu denjenigen hinzu, mit denen Sie eigentlich aus dem Backend herumspielen möchten.

+0

Ist das ein guter Ratschlag? Es muss einen Grund dafür geben, dass diese Steuerelemente vorhanden sind. Können Sie HTML-Textboxen und Dropdown-Listen erstellen? –

+1

Sie bestehen teilweise aus Gründen der Konsistenz, aber vor allem, um die frühe ASP.NET-Idee von Drag & Drop-Webformularen zu unterstützen. Die Leute vermeiden mit Bedacht das Ziehen und Ablegen ihres Weges zu nicht mehr erreichbarem Code, aber manchmal vergessen sie, dass jedes HTML-Tag runat = server unterstützt und sie daher nicht die asp: äquivanten verwenden müssen. –

+0

Ja, als Antwort auf Ihre Frage werden Sie feststellen, dass HtmlSelect eine .DataSource-Eigenschaft und eine .DataBind() -Methode sowie Text- und Value-Member besitzt. –

Verwandte Themen