我正在建立一个数据库来跟踪课堂上的无线项目。我的大部分工作方式都是我想要的,但是我无法将下拉列表中的信息输入到文本框中。我把它们全部放在一个下拉列表中,而不是自己输入数量。当他们输入频率(900)或功率(50)时,他们会为相应的下拉列表选择正确的幅度(MHz和mW)。我似乎无法从c#中的代码隐藏中访问DropDown列表。我认为这是因为它在DetailsView框中,但我确定还有另一种方法。我在这里发布的是该网站。 (对不起长代码) 什么有效:Venue,GroupName,Technology,Channel,Notes,Active 什么行不通:频率,功率和带宽的下拉列表。
<%@ 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等进入数据库......
答案 0 :(得分:1)
你能在代码背后尝试这个吗?
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;
}
}
}
答案 1 :(得分:0)
从@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'并在Frequency DropDownList中选择'MHz'会在数据库中产生'900MHz'。