下拉列表值和文本需要修剪

时间:2010-11-24 19:37:19

标签: asp.net tsql drop-down-menu

我有一个由sqldatasource填充的下拉列表,当我查看之后创建的HTML时,值和文本中有很多空格。这必须是因为数据库中字段的长度是50。

e.g。

HTML就像这样

        <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>

控件来源是:

        <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

我可以修改我的sql中的值,或填充后的下拉列表中的项目吗?

有什么想法吗?

5 个答案:

答案 0 :(得分:5)

您无法修剪固定长度的数据。它总是被填充到50。

所以CAST 然后修剪

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

或者在客户端代码中修复它

答案 1 :(得分:1)

将数据类型更改为VarChar或nVarChar以允许可变长度的数据。

答案 2 :(得分:1)

根据数据的提取方式,您可以在两端修剪。对于第二个选项(在填充之后),您可以使用OnDataBound事件并遍历项目以修剪它们。

答案 3 :(得分:0)

我建议修剪你的SQL:

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

答案 4 :(得分:0)

修剪sql中的空格:

SELECT ltrim(rtrim(dept_name)) FROM depts