Asp.net 基于多个字段-.NET的值创建插入参数

Asp.net 基于多个字段-.NET的值创建插入参数,asp.net,parameters,formview,itemtemplate,Asp.net,Parameters,Formview,Itemtemplate,我有一个插入屏幕,我希望两个字段的值组合起来,为第三个要插入的字段创建值。目前,我有一个名字和姓氏字段,以及一个显示名称字段(见下文)。显示名称字段应始终为(名字)++“”+(姓氏字段的第一个字母)。我想让用户省去手动输入的麻烦。如何在下面的示例中设置参数“Dname”,以获取FName和LName字段的值,并将它们组合为其值 <asp:FormView ID="testFormView" runat="server" DataKeyNames="ID" DataSourceID="tes

我有一个插入屏幕,我希望两个字段的值组合起来,为第三个要插入的字段创建值。目前,我有一个名字和姓氏字段,以及一个显示名称字段(见下文)。显示名称字段应始终为(名字)++“”+(姓氏字段的第一个字母)。我想让用户省去手动输入的麻烦。如何在下面的示例中设置参数“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#。

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


或者更好的方法是,将数据访问从标记中移出,并将其放入实际代码中,并使用ADO.NET正确地进行数据库调用-这将使您能够灵活地按照所需方式构建命令,并根据需要绑定参数。

找到了一个非常简单的解决方案,只需将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>

是的,我在考虑javascript选项,但想避免它。实际上我刚刚更新了InsertCommand,运行得很好。