Введите правильный формат телефона - PullRequest
0 голосов
/ 08 марта 2012

У меня есть текстовое поле, в котором хранится номер телефона.

<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 Ответ

2 голосов
/ 08 марта 2012

Измените процесс на это:

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
    }
    

Примечание: не проверено, но это идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...