根据多个字段的值创建插入参数 - .NET

时间:2013-06-18 15:17:09

标签: asp.net parameters formview itemtemplate

我有一个插入屏幕,我希望将两个字段的值组合在一起,以便为要插入的第三个字段创建值。目前,我有一个名字和姓氏字段,以及一个显示名称字段(见下文)。显示名称字段应始终为(名字)+" " +(姓氏字段的第一个字母)。我想为用户省去必须手动输入的麻烦。如何设置参数" Dname"在下面的示例中,获取FName和LName字段的值并将它们组合起来以获取其值?

<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#。

2 个答案:

答案 0 :(得分:1)

您可以使用javascript手动构建名称并将其转储到文本框中。只需在第一个和最后一个名称文本框上附加一个处理程序到blur事件。发布时,就好像用户自己输入一样。

甚至更好,将您的数据访问从标记中移出并将其放入您的实际代码中,并使用ADO.NET正确调用数据库 - 这将使您可以灵活地按照您希望的方式构建命令,并根据需要绑定参数。

答案 1 :(得分: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>