插入正确的手机格式

时间:2012-03-07 20:39:54

标签: c# asp.net sql-server tsql

我有一个存储电话号码的文本框。

<asp:TextBox runat="server" ID="phone" MaxLength="10" Columns="10" Width="90px" />
                        <asp:MaskedEditExtender ID="phone_MaskedEditExtender" runat="server" CultureAMPMPlaceholder=""
                            CultureCurrencySymbolPlaceholder="" CultureDateFormat="" CultureDatePlaceholder=""
                            CultureDecimalPlaceholder="" CultureThousandsPlaceholder="" CultureTimePlaceholder=""
                            Enabled="True" TargetControlID="phone" Mask="(999)-999-9999" ClearMaskOnLostFocus="False">
                        </asp:MaskedEditExtender>

问题是当我插入电话号码9999999999时,数据库中的号码变为 (999)-9999。 我想要的是9999999999。 另一个代码是:

 <asp:SqlDataSource ID="InsertExtraInfo" runat="server" ConnectionString="<%$ ConnectionStrings:MembershipDB %>"
                    InsertCommand="CreateAdditionalAccountInfo" InsertCommandType="StoredProcedure">
                    <InsertParameters>
                        <asp:ControlParameter Name="FirstName" Type="String" ControlID="FirstName" PropertyName="Text" />
                        <asp:ControlParameter Name="LastName" Type="String" ControlID="LastName" PropertyName="Text" />
                        <asp:ControlParameter Name="Degree" Type="String" ControlID="Degree" PropertyName="Text" />
                        <asp:ControlParameter Name="Organization" Type="String" ControlID="Organization"
                            PropertyName="Text" />
                        <asp:ControlParameter Name="Phone" Type="String" ControlID="Phone" PropertyName="Text" />
                        <asp:ControlParameter Name="Ext" Type="String" ControlID="Ext" PropertyName="Text" />
                        <asp:ControlParameter Name="last4SSN" Type="String" ControlID="TextSSN" PropertyName="Text" />
                    </InsertParameters>
                </asp:SqlDataSource>

存储过程查询

INSERT INTO [User_ExtraInfo] ([UserId], [FirstName], [LastName], [Degree], [Organization], [Phone], [Ext], [last4SSN],[Trained]) VALUES (@UserId, @FirstName, @LastName, @Degree, @Organization, @Phone, @Ext

感谢。

1 个答案:

答案 0 :(得分:2)

将过程更改为:

INSERT INTO [User_ExtraInfo] ([UserId], [FirstName], [LastName], [Degree], [Organization], [Phone], [Ext], [last4SSN],[Trained]) VALUES (@UserId
, @FirstName
, @LastName
, @Degree
, @Organization
, REPLACE(REPLACE( REPLACE(@Phone,'(',''),')','') ,'-','')  , @Ext )

我建议这种方法的原因是因为你正在使用一个SQLDatasource对象,我认为不可能指示插入参数 - 至少不是从标记声明性地 - 忽略掩码。你最好的选择可能只是修改过程。

更新 - 程序化方法:

  1. 将OnInserting的处理程序添加到SqlDataSource:

    <asp:SqlDataSource ID="InsertExtraInfo" runat="server" OnInserting="On_Inserting"
    
  2. 处理代码事件并在那里进行替换:

    protected void On_Inserting(Object sender, SqlDataSourceCommandEventArgs e) {
     e.Command.Parameters["@Phone"].Value=phone.Text.Replace("..."); // etc
    }
    
  3. 注意:未经测试,但这是主意。