0

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

4

2 回答 2

1

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

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

于 2013-06-18T15:28:29.637 回答
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>
于 2013-06-18T15:44:02.920 回答