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