从“详细信息视图”字段中的“下拉列表”向文本框中添加数据

本文关键字:下拉列表 文本 添加 数据 视图 字段 详细信息 | 更新日期: 2023-09-27 18:30:55

我正在制作一个数据库来跟踪教室里的无线项目。我的大部分内容都按照我想要的方式工作,但是我无法将下拉列表中的信息获取到文本框中。我没有输入量级本身,而是将它们全部放在下拉列表中。当他们输入频率(900)或功率(50)时,他们会为相应的下拉列表选择正确的幅度(MHz和mW)。我似乎无法从 c# 中的代码隐藏访问下拉列表。我认为这是因为它在"详细信息视图"框中,但我相信还有另一种方法。 我在这里发布的网站是原样。(对不起,代码很长)有效方法:地点、组名、技术、频道、备注、活动什么不起作用:频率、功率和带宽的下拉列表。

<%@ Page Title="Insert and Update Frequencies" Language="C#" 
MasterPageFile="~/MasterPages/Management.master" AutoEventWireup="true" CodeFile="AddEditFrequency.aspx.cs" Inherits="Management_AddEditFrequency" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cpMainContent" Runat="Server">
    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="Id" DataSourceID="SqlDataSource1" DefaultMode="Insert" Height="50px" Width="125px" OnItemInserted="DetailsView1_ItemInserted" OnItemUpdated="DetailsView1_ItemUpdated">
        <Fields>
            <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="Id" />
            <asp:TemplateField HeaderText="Venue" SortExpression="Venue">
                <EditItemTemplate>
                    <asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("Venue") %>'>
                        <asp:ListItem>Select a Venue</asp:ListItem>
                        <asp:ListItem Text="Laboratory">Laboratory</asp:ListItem>
                        <asp:ListItem Text="Gymnasium">Gymnasium</asp:ListItem>
                        <asp:ListItem Text="Convention Center">Convention Center</asp:ListItem>
                    </asp:DropDownList>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("Venue") %>'>
                        <asp:ListItem>Select a Venue</asp:ListItem>
                        <asp:ListItem Text="Laboratory">Laboratory</asp:ListItem>
                        <asp:ListItem Text="Gymnasium">Gymnasium</asp:ListItem>
                        <asp:ListItem Text="Convention Center">Convention Center</asp:ListItem>
                    </asp:DropDownList>
                </InsertItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="GroupName" SortExpression="GroupName">
                <EditItemTemplate>
                    <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="GroupsDataSource" DataTextField="Name" DataValueField="Name" SelectedValue='<%# Bind("GroupName") %>'>
                    </asp:DropDownList>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="GroupsDataSource" DataTextField="Name" DataValueField="Name" SelectedValue='<%# Bind("GroupName") %>'>
                    </asp:DropDownList>
                </InsertItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Technology" SortExpression="Technology">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Technology") %>'></asp:TextBox>
                    <asp:RequiredFieldValidator ForeColor="Red" ErrorMessage="Enter a Technology Name" ControlToValidate="TextBox3" runat="server" />
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Technology") %>'></asp:TextBox>
                    <asp:RequiredFieldValidator ForeColor="Red" ErrorMessage="Enter a Technology Name" ControlToValidate="TextBox3" runat="server" />
                </InsertItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Frequency" SortExpression="Frequency">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("Frequency") %>'></asp:TextBox>
                    <asp:DropDownList ID="DropDownList4" runat="server">
                        <asp:ListItem>Select a magnitude</asp:ListItem>
                        <asp:ListItem Text="mHz">milli-Hertz</asp:ListItem>
                        <asp:ListItem Text="Hz">Hertz</asp:ListItem>
                        <asp:ListItem Text="kHz">kilo-Hertz</asp:ListItem>
                        <asp:ListItem Text="MHz">Mega-Hertz</asp:ListItem>
                        <asp:ListItem Text="GHz">Giga-Hertz</asp:ListItem>
                        <asp:ListItem Text="THz">Terra-Hertz</asp:ListItem>
                    </asp:DropDownList>
                    <asp:RequiredFieldValidator ForeColor="Red" ErrorMessage="Enter a Frequency" ControlToValidate="TextBox4" runat="server" />
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("Frequency") %>'></asp:TextBox>
                    <asp:DropDownList ID="DropDownList4" runat="server">
                        <asp:ListItem>Select a magnitude</asp:ListItem>
                        <asp:ListItem Text="mHz">milli-Hertz</asp:ListItem>
                        <asp:ListItem Text="Hz">Hertz</asp:ListItem>
                        <asp:ListItem Text="kHz">kilo-Hertz</asp:ListItem>
                        <asp:ListItem Text="MHz">Mega-Hertz</asp:ListItem>
                        <asp:ListItem Text="GHz">Giga-Hertz</asp:ListItem>
                        <asp:ListItem Text="THz">Terra-Hertz</asp:ListItem>
                    </asp:DropDownList>
                    <asp:RequiredFieldValidator ForeColor="Red" ErrorMessage="Enter a Frequency" ControlToValidate="TextBox4" runat="server" />
                </InsertItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Power" SortExpression="Power">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("Power") %>'></asp:TextBox>
                    <asp:DropDownList ID="DropDownList5" runat="server">
                        <asp:ListItem>Select a magnitude</asp:ListItem>
                        <asp:ListItem Text="nW">nano-Watt</asp:ListItem>
                        <asp:ListItem Text="uW">micro-Watt</asp:ListItem>
                        <asp:ListItem Text="mW">milli-Watt</asp:ListItem>
                        <asp:ListItem Text="W">Watt</asp:ListItem>
                        <asp:ListItem Text="kW">kilo-Watt</asp:ListItem>
                        <asp:ListItem Text="MW">Mega-Watt</asp:ListItem>
                        <asp:ListItem Text="GW">Giga-Watt</asp:ListItem>
                    </asp:DropDownList>
                    <asp:RequiredFieldValidator ForeColor="Red" ErrorMessage="Enter a Power value" ControlToValidate="DropDownList5" runat="server" />
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("Power") %>'></asp:TextBox>
                    <asp:DropDownList ID="DropDownList5" runat="server">
                        <asp:ListItem>Select a magnitude</asp:ListItem>
                        <asp:ListItem Text="nW">nano-Watt</asp:ListItem>
                        <asp:ListItem Text="uW">micro-Watt</asp:ListItem>
                        <asp:ListItem Text="mW">milli-Watt</asp:ListItem>
                        <asp:ListItem Text="W">Watt</asp:ListItem>
                        <asp:ListItem Text="kW">kilo-Watt</asp:ListItem>
                        <asp:ListItem Text="MW">Mega-Watt</asp:ListItem>
                        <asp:ListItem Text="GW">Giga-Watt</asp:ListItem>
                    </asp:DropDownList>
                    <asp:RequiredFieldValidator ForeColor="Red" ErrorMessage="Enter a Power value" ControlToValidate="DropDownList5" runat="server" />
                </InsertItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Bandwidth" SortExpression="Bandwidth">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("Bandwidth") %>'></asp:TextBox>
                    <asp:DropDownList ID="DropDownList6" runat="server">
                        <asp:ListItem>Select a magnitude</asp:ListItem>
                        <asp:ListItem Text="mHz">milli-Hertz</asp:ListItem>
                        <asp:ListItem Text="Hz">Hertz</asp:ListItem>
                        <asp:ListItem Text="kHz">kilo-Hertz</asp:ListItem>
                        <asp:ListItem Text="MHz">Mega-Hertz</asp:ListItem>
                        <asp:ListItem Text="GHz">Giga-Hertz</asp:ListItem>
                        <asp:ListItem Text="THz">Terra-Hertz</asp:ListItem>
                    </asp:DropDownList>
                    <asp:RequiredFieldValidator ForeColor="Red" ErrorMessage="Enter a Bandwidth" ControlToValidate="DropDownList6" runat="server" />
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("Bandwidth") %>'></asp:TextBox>
                    <asp:DropDownList ID="DropDownList6" runat="server">
                        <asp:ListItem>Select a magnitude</asp:ListItem>
                        <asp:ListItem Text="mHz">milli-Hertz</asp:ListItem>
                        <asp:ListItem Text="Hz">Hertz</asp:ListItem>
                        <asp:ListItem Text="kHz">kilo-Hertz</asp:ListItem>
                        <asp:ListItem Text="MHz">Mega-Hertz</asp:ListItem>
                        <asp:ListItem Text="GHz">Giga-Hertz</asp:ListItem>
                        <asp:ListItem Text="THz">Terra-Hertz</asp:ListItem>
                    </asp:DropDownList>
                    <asp:RequiredFieldValidator ForeColor="Red" ErrorMessage="Enter a Bandwidth" ControlToValidate="DropDownList6" runat="server" />
                </InsertItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="Channel" HeaderText="Channel" SortExpression="Channel" />
            <asp:TemplateField HeaderText="Notes" SortExpression="Notes">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox7" TextMode="MultiLine" Width="500" Height="100" runat="server" Text='<%# Bind("Notes") %>'></asp:TextBox>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox7" TextMode="MultiLine" Width="500" Height="100" runat="server" Text='<%# Bind("Notes") %>'></asp:TextBox>
                </InsertItemTemplate>
            </asp:TemplateField>
            <asp:CheckBoxField DataField="Active" HeaderText="Active" SortExpression="Active" />
            <asp:CommandField ShowEditButton="True" ShowInsertButton="True" CancelText="Clear" />
        </Fields>
    </asp:DetailsView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:FrequencyTrackerConnectionString1 %>" DeleteCommand="DELETE FROM [Listing] WHERE [Id] = @Id" InsertCommand="INSERT INTO [Listing] ([Venue], [GroupName], [Technology], [Frequency], [Power], [Bandwidth], [Channel], [Notes], [Active]) VALUES (@Venue, @GroupName, @Technology, @Frequency, @Power, @Bandwidth, @Channel, @Notes, @Active)" SelectCommand="SELECT * FROM [Listing] WHERE ([Id] = @Id)" UpdateCommand="UPDATE [Listing] SET [Venue] = @Venue, [GroupName] = @GroupName, [Technology] = @Technology, [Frequency] = @Frequency, [Power] = @Power, [Bandwidth] = @Bandwidth, [Channel] = @Channel, [Notes] = @Notes, [Active] = @Active WHERE [Id] = @Id">
        <DeleteParameters>
            <asp:Parameter Name="Id" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="Venue" Type="String"></asp:Parameter>
            <asp:Parameter Name="GroupName" Type="String" />
            <asp:Parameter Name="Technology" Type="String" />
            <asp:Parameter Name="Frequency" Type="String" />
            <asp:Parameter Name="Power" Type="String" />
            <asp:Parameter Name="Bandwidth" Type="String" />
            <asp:Parameter Name="Channel" Type="String" />
            <asp:Parameter Name="Notes" Type="String" />
            <asp:Parameter Name="Active" Type="Boolean" />
        </InsertParameters>
        <SelectParameters>
            <asp:QueryStringParameter Name="Id" QueryStringField="Id" Type="Int32" />
        </SelectParameters>
        <UpdateParameters>
            <asp:Parameter Name="Venue" Type="String" />
            <asp:Parameter Name="GroupName" Type="String" />
            <asp:Parameter Name="Technology" Type="String" />
            <asp:Parameter Name="Frequency" Type="String" />
            <asp:Parameter Name="Power" Type="String" />
            <asp:Parameter Name="Bandwidth" Type="String" />
            <asp:Parameter Name="Channel" Type="String" />
            <asp:Parameter Name="Notes" Type="String" />
            <asp:Parameter Name="Active" Type="Boolean" />
            <asp:Parameter Name="Id" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="GroupsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:FrequencyTrackerConnectionString1 %>" SelectCommand="SELECT [Name] FROM [GroupList] ORDER BY [SortOrder]"></asp:SqlDataSource>
</asp:Content>

按插入后,它应该以频率:900MHz,功率:50mW等进入数据库...

从“详细信息视图”字段中的“下拉列表”向文本框中添加数据

你能在代码后面试试这个吗?

protected void  DetailsView1_ItemCommand(object sender, System.Web.UI.WebControls.DetailsViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Update") { 
        DropDownList yourddl = DetailsView1.FindControl("yourdropdownlist"); 
        if (yourddl.SelectedIndex > 0) { 
            var tbox = DetailsView1.FindControl("yourtextbox");
            tbox.text = Now().ToString; 
        } 
    } 
} 

从@Suni的答案中,我得到以下错误:

无法将类型"System.Web.UI.Control"隐式转换为 'System.Web.UI.WebControls.DropDownList'

为了解决这个错误,我分别为DropDownList和Textbox键入了DetailsView1。以下是完整的解决方案:

protected void DetailsView1_ItemCommand(object sender, System.Web.UI.WebControls.DetailsViewCommandEventArgs e)
{
    if (e.CommandName == "Update" || e.CommandName == "Insert")
    {
        //Frequency
        DropDownList FreqDDL = (DropDownList)DetailsView1.FindControl("DropDownList4");
        if (FreqDDL.SelectedIndex > 0)
        {
            var FreqTbox = (TextBox)DetailsView1.FindControl("TextBox4");
            FreqTbox.Text = FreqTbox.Text + FreqDDL.Text;
        }
        //Power
        DropDownList PowerDDL = (DropDownList)DetailsView1.FindControl("DropDownList5");
        if (PowerDDL.SelectedIndex > 0)
        {
            var PowerTbox = (TextBox)DetailsView1.FindControl("TextBox5");
            PowerTbox.Text = PowerTbox.Text + PowerDDL.Text;
        }
        //Bandwidth
        DropDownList BwidthDDL = (DropDownList)DetailsView1.FindControl("DropDownList6");
        if (BwidthDDL.SelectedIndex > 0)
        {
            var BwidthTbox = (TextBox)DetailsView1.FindControl("TextBox6");
            BwidthTbox.Text = BwidthTbox.Text + BwidthDDL.Text;
        }
    }
} 

结果符合预期。在"频率"文本框中键入"900"并在"频率下拉列表"中选择"MHz",将在数据库中生成"900MHz"。