用户界面控件GUI元素,类似于列表框,允许用户从列表中选择一个值。当下拉列表处于非活动状态时,它会显示单个值。激活后,它会显示(下拉)一个值列表,用户可以从中选择一个值。
引导菜单下拉菜单在嵌入 header.html 文件的页面上不起作用
我创建了一个项目,在所有页面(包括index.html等)上嵌入了jQuery通用header.html文件 我在其中添加了 Bootstrap。现在,header.html 中的下拉菜单工作正常;但没有...
在下面的示例中,单元格 A10 包含一个主下拉列表(A10-E10 是合并单元格,用于显示每个下拉选项的完整长度)。 当“我们认为您存入的支票可能无法通过...
由中继器生成的 ASP.NET DropDownList 在创建后未触发 OnSelectedIndexChanged
我正在处理一个棘手的错误。我在 .aspx 文件中使用 Repeater 创建了一个 ASP DropDownList: 我的页面.aspx 我正在处理一个棘手的错误。我在 .aspx 文件中使用 Repeater 创建了一个 ASP DropDownList: 我的页面.aspx <asp:Repeater ID="rptTemplateFields" runat="server" DataSource='<%# rptrDataSource %>' OnItemDataBound="rptTemplateFields_OnItemDataBound"> <ItemTemplate> <asp:DropDownList ID="ddlRepeater" runat="server" AppendDataBoundItems="true" AutoPostBack="True" OnSelectedIndexChanged="ddlRepeater_SelectedIndexChanged" width="360" Visible="False"> <asp:ListItem Text="" Value="" /> </asp:DropDownList> </ItemTemplate> </asp:Repeater> 我在代码隐藏中使用以下内容填充这些下拉菜单: mypage.aspx.cs protected void rptTemplateFields_OnItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { dynamic field = e.Item.DataItem; BugFieldName fieldName = field?.FieldName; string fieldContent = field?.FieldContent; var allowedValues = GenerateAllowedValues(fieldName); if (!fieldName.IsNullOrUnsetValue() && !allowedValues.IsNullOrEmpty()) { var ddl = e.Item.FindControl("ddlRepeater") as DropDownList; ddl.ID = "_ddlField" + fieldName; ddl.Attributes.Add("Name", "_ddlField" + fieldName); ddl.ClientIDMode = ClientIDMode.Static; ddl.DataSource = allowedValues; ddl.SelectedValue = allowedValues.Contains(fieldContent) ? fieldContent : null; ddl.Visible = true; ddl.DataBind(); } } } protected void ddlRepeater_SelectedIndexChanged(object sender, EventArgs e) { var ddlRepeater = sender as DropDownList; var state = (string)ViewState[ddlRepeater.Attributes["Name"]]; if (state != ddlRepeater.SelectedItem.Text) { ViewState[ddlRepeater.Attributes["Name"]] = ddlRepeater.SelectedItem.Text; } } 问题是我第一次单击下拉列表并更改项目(立即创建和数据绑定后),触发页面加载并擦除 ddl.SelectedValue 等状态,并且 DropDownList 的“OnSelectedIndexChanged”事件处理程序执行不火。 在此页面加载之后,DropDownList DO 中的后续更改会立即触发 OnSelectedIndexChanged 并保留列表的状态。我想象回发和数据绑定发生了一些奇怪的事情,但我不确定我哪里出了问题。 到目前为止,我已经尝试使用其他事件处理程序,但没有任何运气。我已经确认确实发生了页面加载并且它是回发。我将 <%@ Page ViewStateMode="Enabled" %> 添加到我的 aspx 文件中。我还尝试在中继器上使用 ItemCommand 监听器。这也没有火。 好的,这个问题看起来是您在标记中设置了中继器的数据源。因此,对于任何回发,您的重新加载和重新绑定代码都会再次运行,这会导致您所做的任何选择丢失(重新绑定会一次又一次地重新运行行数据绑定代码)。因此,您所做的任何更改都会因回发而丢失。 简单的解决方案是将数据绑定到后面代码中的中继器,并且仅一次。 因此,说出这个简单的标记: <div style="float: left; width: 30%"> <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> <ItemTemplate> <h4>Booking Infomration</h4> <asp:Label ID="lblPerson" runat="server" Width="200px" Text='<%# Eval("FirstName") + " " + Eval("LastName") %>'> </asp:Label> <asp:Label ID="Label1" runat="server" Text="Hotel:" Style="margin-left: 30px"> </asp:Label> <asp:DropDownList ID="cboHotel" runat="server" DataValueField="ID" DataTextField="HotelName" AutoPostBack="true" OnSelectedIndexChanged="cboHotel_SelectedIndexChanged"> </asp:DropDownList> <br /> <hr style="height: 2px; border: none; background-color: black" /> </ItemTemplate> </asp:Repeater> </div> <div style="float: left; margin-left: 30px"> <h3>Combo box selected row information</h3> <asp:TextBox ID="txtInfo" runat="server" TextMode="MultiLine" Height="160px" Width="350px"></asp:TextBox> </div> 我们的代码在后面,请注意我们如何确保仅在第一页加载时绑定数据(IsPostBack = false)。 因此这段代码: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) LoadData(); } void LoadData() { string strSQL = @"SELECT ID, HotelName FROM tblHotels ORDER BY HotelName"; rstHotels = General.MyRst(strSQL); strSQL = "SELECT * FROM People ORDER BY FirstName"; Repeater1.DataSource = General.MyRst(strSQL); Repeater1.DataBind(); } protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { DropDownList cboHotel = (DropDownList)e.Item.FindControl("cboHotel"); cboHotel.DataSource = rstHotels; cboHotel.DataBind(); cboHotel.Items.Insert(0, new ListItem("Please select", "0")); DataRowView rowData = (DataRowView)e.Item.DataItem; // current binding row data if (rowData["Hotel_id"] != DBNull.Value) cboHotel.SelectedValue = rowData["Hotel_id"].ToString(); } } protected void cboHotel_SelectedIndexChanged(object sender, EventArgs e) { DropDownList cboHotel = (DropDownList)sender; RepeaterItem rptRow = (RepeaterItem)cboHotel.NamingContainer; string sInfo = ""; sInfo += $"Row index selected = {rptRow.ItemIndex}\n"; Label lblPerson = (Label)rptRow.FindControl("lblPerson"); sInfo += $"Row person information = {lblPerson.Text}\n"; sInfo += $"combo Hotel id = {cboHotel.SelectedItem.Value}\n"; sInfo += $"combo Hotel Name (text) = {cboHotel.SelectedItem.Text}\n"; txtInfo.Text = sInfo; } 现在的结果是这样的: 因此,通常可以在标记中放置一些数据源,但是一旦您有了回发和附加代码逻辑,那么我建议您通过使用后面的代码来“控制”数据绑定,而不是离开重新绑定可能会或可能不会再次发生。
我正在尝试使用下拉菜单作为我正在构建的应用程序的导航。但是,我在下拉菜单项的 onClick 函数中收到一个错误,提示“未解决的引用”。 我...
Bootstrap 5。这是我的代码,只是 UL,因为一旦页面加载, 列表就会动态地来自数据库。 Bootstrap 5。这是我的代码,只是 UL,因为一旦页面加载,<li> 列表就会动态地来自数据库。 <div class="btn-group"> <button id="dropdownGerencia" class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> My list </button> <ul id="mtUl" class="dropdown-menu"> </ul> 现在,填充列表后,我希望下拉列表显示用户选择的值。我有这个代码。但问题是我的下拉菜单与其他下拉菜单嵌套在一起(所有下拉菜单上方都有一个 .btn-group。因此,当他们单击一个特定的 LI 时,所有下拉菜单都会获得值(因为 .btn-group 会获取值,而不是仅获取值) li 存在。 $(".dropdown-menu").on('click', ' li a', function () { var selText = $(this).text(); $(this).parents('.btn-group').find('.dropdown-toggle').html(selText + ' ' + '<span class="caret"></span>'); }); 我也尝试过这个,但这没有显示所选值,因为它是后来动态创建的。 $('#myUl li').on('click', function () { $('#mySpecificDropdown').html($(this).find('a').html()); }); 您可以将 prev() 应用于所选元素的上一个元素,并使用相同的方法更改按钮的文本或获取当前 dropdown-menu 的索引并使用它来选择所需的 dropdown-menu。 演示代码: $(".dropdown-menu").on('click', ' li a', function() { var selText = $(this).text(); var index_ = $('.dropdown-menu').index($(this).closest('.dropdown-menu')); $(this).closest('.dropdown-menu').prev().html(selText + ' ' + '<span class="caret"></span>'); //or use below with index // $('.dropdown-toggle').eq(index_).html(selText + ' ' + '<span class="caret"></span>') }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> <div class="btn-group"> <button id="dropdownGerencia" class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown link </button> <ul id="mtUl" class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else</a></li> </ul> <button id="dropdownGerencia1" class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown link </button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another</a></li> <li><a class="dropdown-item" href="#">Something</a></li> </ul> </div>
我的网站上的导航下拉菜单出现了问题,我几乎已经解决了,但无法完全解决。我担心我的代码可能搞砸了。 当我介绍“卷轴到锚......
在 gridview 中,每行都有 2 个下拉菜单。选择第一个下拉列表中的值后,它应该在第二个下拉列表中显示下拉值
下拉菜单依赖于另一个下拉菜单。 这是我尝试过的 ASPX gridview 中的下拉菜单依赖于另一个下拉菜单。 here is what i tried aspx 选择程序 </asp:DropDownList> <asp:RequiredFieldValidator ID="rfvddlProgram" runat="server" ErrorMessage="*" ControlToValidate="ddlProgram" Font-Bold="False" Font-Names="Verdana" Font-Size="8pt" SetFocusOnError="True" ValidationGroup="v1" ForeColor="Red" InitialValue="0"></asp:RequiredFieldValidator> <%-- <a href="#" target="_blank">BA Economics</a>--%> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Location"> <ItemTemplate> <asp:DropDownList ID="ddl_Location" runat="server" class="form-control form-control-sm mb-9"> <asp:ListItem Value="0">Select Location</asp:ListItem> </asp:DropDownList> <asp:RequiredFieldValidator ID="rfvddlLocation" runat="server" ErrorMessage="*" ControlToValidate="ddl_Location" Font-Bold="False" Font-Names="Verdana" Font-Size="8pt" SetFocusOnError="True" ValidationGroup="v1" ForeColor="Red" InitialValue="0"></asp:RequiredFieldValidator> </ItemTemplate> </asp:TemplateField> </Columns> <FooterStyle BackColor="White" ForeColor="#000066" /> <HeaderStyle BackColor="#6777ef" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" /> <RowStyle ForeColor="#000066" /> <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" /> <SortedAscendingCellStyle BackColor="#F1F1F1" /> <SortedAscendingHeaderStyle BackColor="#007DBB" /> <SortedDescendingCellStyle BackColor="#CAC9C9" /> <SortedDescendingHeaderStyle BackColor="#00547E" /> code behind file protected void gvProgram_RowDataBound(object sender, GridViewRowEventArgs e) { DataSet ds = new DataSet(); Btech.Mode = "BindData"; ds = objDal.Adm(Btech); if (e.Row.RowType == DataControlRowType.DataRow) { if (ds.Tables[0].Rows.Count > 0 && ds.Tables[1].Rows.Count > 0) { DropDownList ddlProgram = (DropDownList)e.Row.FindControl("ddlProgram"); ddlProgram.Items.Clear(); ddlProgram.DataSource = ds.Tables[13]; ddlProgram.DataTextField = "Description"; ddlProgram.DataValueField = "CourseID"; ddlProgram.DataBind(); ddlProgram.Items.Insert(0, new ListItem("Select course", "0")); DropDownList ddl_Location = (DropDownList)e.Row.FindControl("ddl_Location"); //ddlTeacherNames.Items.Clear(); ddl_Location.DataSource = ds.Tables[14]; ddl_Location.DataTextField = "CenterName"; ddl_Location.DataValueField = "CentreCode"; ddl_Location.DataBind(); ddl_Location.Items.Insert(0, new ListItem("Select Location", "0")); } } } protected void ddlProgram_SelectedIndexChanged(对象发送者,EventArgs e) { } 好吧,有几件事我们必须处理。 首先,加载 GridView。 然后我们必须加载 2 个组合框,但还要为 2 个组合框设置正确的级联值。然后我们必须根据行数据源设置组合框的正确值。所以,理论上这里有 3 个步骤。这一步有点倒退,因为第二个组合框选择和值必须在第一个组合框中设置正确的值。 然后,完成上述所有操作后,我们需要将组合框设置为在用户选择第一个组合框时正确级联,并级联到该 GridRow 中的第二个组合框。 通常,这表明第一个组合框未绑定到给定行中的任何数据,但只有第二个组合框要绑定到给定行数据。 我没有你的样本数据,但让我们假设一些人,我们选择城市,然后第二个级联组合框是他们选择的酒店。 所以,首先是我们的 GridView 标记: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" CssClass="table" Width="30%" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:BoundField DataField="Firstname" HeaderText="Firstname" /> <asp:BoundField DataField="LastName" HeaderText="LastName" /> <asp:TemplateField HeaderText="Select Hotel City"> <ItemTemplate> <asp:DropDownList ID="cboCity" runat="server" Width="120px" Height="26px" DataTextField = "City" DataValueField = "City" AutoPostback="true" OnSelectedIndexChanged="cboCity_SelectedIndexChanged" > </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Select Hotel"> <ItemTemplate> <asp:DropDownList ID="cboHotels" runat="server" Width="210px" Height="26px" DataValueField ="ID" DataTextField ="HotelName"> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> 我还要指出,我不关心 GridView 事件,我建议您也不要打扰。 所以,首先是加载组合框的代码。 DataTable rstCity = new DataTable(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) LoadGrid(); } void LoadGrid () { // load up City list for combo box - all rows (scope = page) SqlCommand cmdSQL = new SqlCommand("SELECT City from City ORDER BY City"); rstCity = MyRstP(cmdSQL); // load up the grid cmdSQL.CommandText = "SELECT * from People ORDER BY FirstName"; GridView1.DataSource = MyRstP(cmdSQL); GridView1.DataBind(); } 好的,上面加载了 GridView。 但是,如上所述,虽然我们有 2 个组合框(选择城市,然后在给定城市列表中选择一家酒店),但只需要保存第二个组合框选择。 因此,在行数据绑定中,我们不仅要加载2个组合框,还要正确设置城市选择,然后根据该酒店加载酒店,然后选择酒店。 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { DataRowView gData = (DataRowView)e.Row.DataItem; // get the row data // load the city combo box DropDownList cboCity = (DropDownList)e.Row.FindControl("cboCity"); cboCity.DataSource = rstCity; cboCity.DataBind(); // add blank row for city cboCity.Items.Insert(0, new ListItem("Select City", "")); // We have to check if a hotel been selected. SqlCommand cmdSQL = new SqlCommand(); DropDownList cboHotels = (DropDownList)e.Row.FindControl("cboHotels"); Debug.Print($"<{gData["Hotel_ID"].ToString()}>"); if (gData["Hotel_ID"] != DBNull.Value) { cmdSQL = new SqlCommand("SELECT ID, City, HotelName FROM tblHotels WHERE ID = @ID"); cmdSQL.Parameters.Add("@ID", SqlDbType.Int).Value = gData["Hotel_ID"]; DataRow OneHotel = MyRstP(cmdSQL).Rows[0]; // now load Hotel combo box - but cascade from above City cbo string strSQL = @"Select ID, HotelName From tblHotels WHERE City = @City " + " ORDER BY HotelName"; cmdSQL = new SqlCommand(strSQL); cmdSQL.Parameters.Add("@City", SqlDbType.NVarChar).Value = OneHotel["City"]; DataTable rstHotels = MyRstP(cmdSQL); cboHotels.DataSource = rstHotels; cboHotels.DataBind(); cboHotels.Items.Insert(0, new ListItem("Select Hotel", "")); // set hotels combo to current selected cboHotels.SelectedValue = gData["Hotel_id"].ToString(); // set City combo box to current selected City cboCity.SelectedValue = OneHotel["City"].ToString(); } } } 所以,上面设置了一切。 接下来是城市选择的级联。因此,请注意上面的组合框的标记是这样的: <asp:TemplateField HeaderText="Select Hotel City"> <ItemTemplate> <asp:DropDownList ID="cboCity" runat="server" Width="120px" Height="26px" DataTextField = "City" DataValueField = "City" AutoPostback="true" OnSelectedIndexChanged="cboCity_SelectedIndexChanged" > </asp:DropDownList> </ItemTemplate> 注意 autopost back = true 的情况。并记下组合框的事件设置。 所以,城市组合框更改事件是这样的: protected void cboCity_SelectedIndexChanged(object sender, EventArgs e) { // city changed, so cascade Hotel cbo DropDownList cboCity = (DropDownList)sender; GridViewRow gRow = (GridViewRow)cboCity.NamingContainer; // filter hotels to current city string strCity = cboCity.SelectedItem.Text; DropDownList cboHotels = (DropDownList)gRow.FindControl("cboHotels"); if (strCity != "Select City") { SqlCommand cmdSQL = new SqlCommand(@"SELECT * from tblHotels WHERE City = @City ORDER BY HotelName"); cmdSQL.Parameters.Add("@City", SqlDbType.NVarChar).Value = strCity; cboHotels.DataSource = MyRstP(cmdSQL); cboHotels.DataBind(); cboHotels.Items.Insert(0, new ListItem("Select Hotel", "")); } } 当然,用户进行更改后,我们需要保存更改。所以,我们的保存按钮是这样的: protected void cmdSave_Click(object sender, EventArgs e) { foreach(GridViewRow gRow in GridView1.Rows) { DropDownList cboHotel = (DropDownList)gRow.FindControl("cboHotels"); if (cboHotel.SelectedIndex > 0) rstGrid.Rows[gRow.RowIndex]["Hotel_id"] = cboHotel.SelectedItem.Value; } using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4)) { string strSQL = "SELECT * FROM People ORDER BY FirstName,ID"; using (SqlCommand cmdSQL = new SqlCommand(strSQL, conn)) { conn.Open(); SqlDataAdapter da = new SqlDataAdapter(cmdSQL); SqlCommandBuilder dau = new SqlCommandBuilder(da); da.Update(rstGrid); } } } 结果是这样的: 所以,结果看起来像这样:
如何在 styles.ts 文件中设置占位符的样式。现在不工作。 从 'react' 导入 React, { useState }; 从'react-native'导入{TextStyle}; 导入 DropDownPicker, { ItemType } ...
需要像上图一样开发,其中可以有某种文本、图标、尾随图标和其他信息。谢谢!
我不知道如何称呼它,也不知道如何在颤振中实现它。打开的菜单。有人有任何建议或可以使用的库吗?
我不知道如何称呼它,也不知道如何在颤振中实现它。一个像下拉菜单一样打开的菜单,但没有按钮。有人有任何建议或可以使用的库吗? 谢谢...
我目前正在尝试更改产品变体下拉菜单的文本颜色。目前,当我使用下拉菜单时,字体在白色背景上显示为浅灰色,难以阅读。
我目前正在尝试更改产品变体下拉菜单的文本颜色。目前,当我使用下拉菜单时,字体在白色背景上显示为浅灰色,难以阅读。
从下拉菜单中单击触发器时,Shadcn ui 警报对话框会自动关闭
所以我知道这是其他人遇到的问题,但所有人都在同一个文件中使用了警报对话框。我尝试用“”打开警报对话框,并有一个
为什么我在 jqxgird 的一列中创建下拉列表时出现错误?
我使用 jqWidget 创建了一个网格。我试图将下拉列表放在 jqxgrid 的第七列中。我的代码如下。我无法获得预期的输出。 // 我想要获取的数据
我的 Javascript/HTML 代码都在一个文件中,现在我想将其拆分为单独的文件。 我的 JS 代码在拆分之前可以正常工作,但是当我将其移动到新文件时,commen...
JavaScript .siblings 方法在 Wordpress 中带有下拉子链接的移动菜单中不起作用
在 bemchemia.pl 网站上,我有一个带有下拉子链接的 Wordpress 移动菜单。我想仅通过单击箭头而不是单击父链接来使用 JavaScript .slideToggle 显示子链接....
是否可以控制IE8中select的下拉列表宽度? 当页面加载时,我希望下拉列表足够小以仅包含单词 SELECT,但是当用户单击它时......
在代码中我有复选框,选中时会显示下拉列表。 如果选择下拉列表的第一个值,则下一个下拉列表将显示在其旁边。 问题是我无法增加宽度...
我的主页的菜单包括一个下拉菜单。我使用 html、css 和 php,但不使用 js。我无法让下拉菜单不下推页面内容,而是打开内容。你可以吗