2010-11-24 10 views
2

Ich habe eine Dropdown-Liste, die von einer sqldatasource bevölkert wird, und wenn ich mir das HTML ansehe, das später erstellt wird, gibt es viele Leerzeichen im Wert und im Text. Dies muss, weil die Länge der Felder in der Datenbank 50 ist.Dropdown-Werte und Text müssen getrimmt werden

z.B.

Die HTML ist wie dieser

 <select name="DropDownList1" onchange="javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0)" id="DropDownList1" style="height:23px;width:148px;"> 
    <option value="IT Dev           ">IT Dev           </option> 
    <option value="Marketing           ">Marketing           </option> 
    <option value="HR            ">HR            </option> 
    <option selected="selected" value="Finance           ">Finance           </option> 
    <option value="Corporate           ">Corporate           </option> 
    <option value="IT Support          ">IT Support          </option> 

</select> 

Die Kontrollen Quelle:

 <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource2" 
      DataValueField="dept_name" Height="23px" Width="148px"> 
      <asp:ListItem Text="All" Value="%"></asp:ListItem> 
     </asp:DropDownList> 

     <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:scConnString %>" 
      SelectCommand="SELECT dept_name FROM depts"></asp:SqlDataSource 

Kann ich die Werte in meinem SQL oder die Elemente in der Dropdownlist trimmen, nachdem sie bevölkert wurde?

Irgendwelche Ideen?

+0

dept_name ist varchar (50) oder char (50)? – gbn

Antwort

5

Sie können keine Daten fester Länge trimmen. Es wird immer wieder heraus 50.

So CAST dann aufgefüllt werden trimmen

SELECT RTRIM(CAST(dept_name AS varchar(50))) AS dept_name FROM depts 

--other options, after comment 
SELECT RTRIM(CAST(dept_name AS varchar(50))) dept_name FROM depts 
SELECT dept_name = RTRIM(CAST(dept_name AS varchar(50))) FROM depts 

Oder fixieren im Client-Code

+0

Lassen Sie die AS fallen? Oder lege es vor dept_name? – Narveson

+0

@Narveson: mein Fehler, sorry. Ich würde AS (meine erste Option) normalerweise – gbn

+0

versuchte die erste und zweite Optionen und habe sie zum Arbeiten..aber nur nach dem Entfernen der "AS" nach dept_name? Aber ja, es funktioniert gut. Danke;) – thegunner

0

Ich würde empfehlen, in der SQL-Besatz:

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:scConnString %>" 
     SelectCommand="SELECT LTRIM(RTRIM(dept_name)) FROM depts"></asp:SqlDataSource 
+1

Sie können Daten fester Länge nicht schneiden ** und ** Sie würden einen Alias ​​benötigen – gbn

1

Ändern Sie den Datentyp VARCHAR oder nVarChar varible Länge von Daten zu ermöglichen.

1

Je nachdem, wie Ihre Daten extrahiert werden, können Sie möglicherweise an beiden Enden trimmen. Für die zweite Option (nach der Population) können Sie das OnDataBound-Ereignis verwenden und die Elemente durchlaufen, um sie zu trimmen.

0

trim Räume von sql:

SELECT ltrim(rtrim(dept_name)) FROM depts 
+0

Sie können Daten fester Länge ** nicht schneiden ** und ** Sie würden einen Alias ​​benötigen – gbn

Verwandte Themen