2012-03-07 6 views
0

私は電話番号を格納するテキストボックスを持っています。適切な電話形式を挿入する

<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 

おかげです。

答えて

2

変更し、これにPROC:

あなたがSqlDataSourceコントロールオブジェクトを使用していると私は-at以上ない宣言から、それが挿入パラメータを指示することが可能ですとは思わないので、私はこのアプローチを提案する理由は
INSERT INTO [User_ExtraInfo] ([UserId], [FirstName], [LastName], [Degree], [Organization], [Phone], [Ext], [last4SSN],[Trained]) VALUES (@UserId 
, @FirstName 
, @LastName 
, @Degree 
, @Organization 
, REPLACE(REPLACE(REPLACE(@Phone,'(',''),')','') ,'-','') , @Ext) 

マークアップはマスクを無視します。あなたの最善の策はおそらくprocを変更することです。

UPDATE - プログラム的なアプローチ:

  1. をSqlDataSourceにOnInsertingのためのハンドラを追加します。

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

注:テストされていませんが、それは考えです。

+0

私はそれを変更する権限を持っていないので、あなたが変更することなくそれを行うことができる場合は、より良いです。 –

+0

@Loveは私の更新を読んでいます。それはあなたが必要とするものに近いはずです。 – Icarus

+0

e.Command.Parameters ["@ Phone"]またはe.Command.Parameters ["Phone"]?私は例外がある。 –

関連する問題