我有一个由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中的值,或填充后的下拉列表中的项目吗?
有什么想法吗?
答案 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