2013-06-18 24 views
0

我有一個插入屏幕,我希望將兩個字段的值進行組合以創建要插入的第三個字段的值。目前我有名字和姓氏字段,以及顯示名稱字段(見下文)。顯示名稱字段應始終爲(名字)+「」+(姓氏字段的第一個字母)。我想爲用戶省去手動輸入這樣的麻煩。我如何在下面的例子中設置參數「Dname」來獲取FName和LName字段的值並將它們合併爲它的值?基於多個字段的值創建一個插入參數 - .NET

<asp:FormView ID="testFormView" runat="server" DataKeyNames="ID" DataSourceID="testDataSource"> 
    <InsertItemTemplate> 
     First Name: <asp:TextBox ID="First_NameTextBox" runat="server" Text='<%# Bind("FName") %>' /> 
     <br /> 
     Last Name: <asp:TextBox ID="Last_NameTextBox" runat="server" Text='<%# Bind("LName") %>' /> 
     <br /> 
     Display Name: <asp:TextBox ID="Display_NameTextBox" runat="server" Text='<%# Bind("DName") %>' /> 
     <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" /> 
    </InsertItemTemplate> 
</asp:FormView> 
<asp:SqlDataSource ID="testDataSource" runat="server" 
    InsertCommand="INSERT INTO [Users] ([FName], [LName], [DName]) VALUES (@FName, @LName, @DName)"> 
    <InsertParameters> 
     <asp:Parameter Name="FName" Type="String" /> 
     <asp:Parameter Name="LName" Type="String" /> 
     <asp:Parameter Name="DName" Type="String" /> 
    </InsertParameters> 
</asp:SqlDataSource> 

我在代碼隱藏中使用C#。

回答

1

您可以使用JavaScript手動構建名稱並將其轉儲到文本框中。只需在第一個和最後一個名稱文本框上附加一個處理程序到blur事件。當你發佈信息時,就好像用戶自己輸入了一樣。

甚至更​​好的辦法是,將數據訪問移出標記並將其放入實際代碼中,並使用ADO.NET正確地調用數據庫 - 這將使您可以靈活地根據需要構建命令,然後根據需要綁定參數。

+0

是的,我在想的JavaScript選項,但希望避免它。我其實只是更新了InsertCommand,很好地工作。 –

0

找到一個非常簡單的解決方案,這一點,只是要在將InsertCommand SQL查詢更新到下面:

<asp:SqlDataSource ID="testDataSource" runat="server" 
    InsertCommand="INSERT INTO [Users] ([FName], [LName], [DName]) VALUES (@FName, @LName, (@FName + ' ' + SUBSTRING(@LName, 1, 1)))"> 
    <InsertParameters> 
     <asp:Parameter Name="FName" Type="String" /> 
     <asp:Parameter Name="LName" Type="String" /> 
    </InsertParameters>