Asp.net 将下拉列表设置为从不同于填充值的位置开始

Asp.net 将下拉列表设置为从不同于填充值的位置开始,asp.net,vb.net,Asp.net,Vb.net,谷歌搜索了一段时间,但在任何地方都看不到这个答案 在VS2013中使用ASP.NET(VB) 我有一个带有4个预设值的下拉列表(见下文) 这些值以15分钟的间隔表示分钟 当页面加载时,我想将当前时间(以分钟为单位)放在此下拉列表中,用户可以根据需要更改为15分钟的时间段。我知道如何在VB中获取当前分钟,但不知道如何设置DDL。使用selectedvalue不起作用。text也不起作用 干杯由于下拉列表只能设置为列表中的值,因此您需要将当前分钟动态添加到页面加载事件中的下拉列表值中: Prot

谷歌搜索了一段时间,但在任何地方都看不到这个答案

在VS2013中使用ASP.NET(VB)

我有一个带有4个预设值的下拉列表(见下文)


这些值以15分钟的间隔表示分钟

当页面加载时,我想将当前时间(以分钟为单位)放在此下拉列表中,用户可以根据需要更改为15分钟的时间段。我知道如何在VB中获取当前分钟,但不知道如何设置DDL。使用selectedvalue不起作用。text也不起作用


干杯

由于下拉列表只能设置为列表中的值,因此您需要将当前分钟动态添加到页面
加载
事件中的下拉列表值中:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Page.IsPostBack Then
        Dim currentMinute = Date.Now.Minute
        Dim currentMinuteString = CStr(currentMinute).PadLeft(2, "0"c)
        If currentMinute Mod 15 = 0 Then
            Me.TimeTextMins.SelectedValue = currentMinuteString
        Else
            Dim position = (currentMinute \ 15) + 1
            Me.TimeTextMins.Items.Insert(position, currentMinuteString)
            Me.TimeTextMins.SelectedValue = currentMinuteString
        End If
    End If

End Sub
更新

根据您对这个问题的评论,您只希望下拉列表中有15分钟的间隔,我不知道您可以使用标准的下拉列表控件来实现这一点,但是有第三方HTML控件更像combobox。您可以在更改选择时删除添加的项目:

Private Sub TimeTextMins_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TimeTextMins.SelectedIndexChanged
    Dim itemsToRemove =
        Me.TimeTextMins.Items.Cast(Of ListItem)() _
            .Where(Function(x) x IsNot Me.TimeTextMins.SelectedItem AndAlso CInt(x.Value) Mod 15 <> 0) _
            .ToList()
    For Each item In itemsToRemove
        Me.TimeTextMins.Items.Remove(item)
    Next
End Sub
Private Sub-TimeTextMins\u SelectedIndexChanged(发送方作为对象,e作为事件参数)处理TimeTextMins.SelectedIndexChanged
Dim itemsToRemove=
Me.TimeTextMins.Items.Cast(列表项的)()_
.Where(函数(x)x不是Me.TimeTextMins.SelectedItem和also CInt(x.Value)Mod 15 0)_
托利斯先生()
对于itemsToRemove中的每个项目
Me.TimeTextMins.Items.Remove(项目)
下一个
端接头

您需要将
AutoPostBack=“true”
添加到
asp:DropDownList
标记中。

由于下拉列表只能设置为列表中的值,因此您需要将当前分钟动态添加到页面
Load
事件:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Page.IsPostBack Then
        Dim currentMinute = Date.Now.Minute
        Dim currentMinuteString = CStr(currentMinute).PadLeft(2, "0"c)
        If currentMinute Mod 15 = 0 Then
            Me.TimeTextMins.SelectedValue = currentMinuteString
        Else
            Dim position = (currentMinute \ 15) + 1
            Me.TimeTextMins.Items.Insert(position, currentMinuteString)
            Me.TimeTextMins.SelectedValue = currentMinuteString
        End If
    End If

End Sub
更新

根据您对这个问题的评论,您只希望下拉列表中有15分钟的间隔,我不知道您可以使用标准的下拉列表控件来实现这一点,但是有第三方HTML控件更像combobox。您可以在更改选择时删除添加的项目:

Private Sub TimeTextMins_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TimeTextMins.SelectedIndexChanged
    Dim itemsToRemove =
        Me.TimeTextMins.Items.Cast(Of ListItem)() _
            .Where(Function(x) x IsNot Me.TimeTextMins.SelectedItem AndAlso CInt(x.Value) Mod 15 <> 0) _
            .ToList()
    For Each item In itemsToRemove
        Me.TimeTextMins.Items.Remove(item)
    Next
End Sub
Private Sub-TimeTextMins\u SelectedIndexChanged(发送方作为对象,e作为事件参数)处理TimeTextMins.SelectedIndexChanged
Dim itemsToRemove=
Me.TimeTextMins.Items.Cast(列表项的)()_
.Where(函数(x)x不是Me.TimeTextMins.SelectedItem和also CInt(x.Value)Mod 15 0)_
托利斯先生()
对于itemsToRemove中的每个项目
Me.TimeTextMins.Items.Remove(项目)
下一个
端接头

您需要将
AutoPostBack=“true”
添加到
asp:DropDownList
标记中。

由于下拉列表只能设置为列表中的值,因此您需要将当前分钟动态添加到页面
Load
事件:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Page.IsPostBack Then
        Dim currentMinute = Date.Now.Minute
        Dim currentMinuteString = CStr(currentMinute).PadLeft(2, "0"c)
        If currentMinute Mod 15 = 0 Then
            Me.TimeTextMins.SelectedValue = currentMinuteString
        Else
            Dim position = (currentMinute \ 15) + 1
            Me.TimeTextMins.Items.Insert(position, currentMinuteString)
            Me.TimeTextMins.SelectedValue = currentMinuteString
        End If
    End If

End Sub
更新

根据您对这个问题的评论,您只希望下拉列表中有15分钟的间隔,我不知道您可以使用标准的下拉列表控件来实现这一点,但是有第三方HTML控件更像combobox。您可以在更改选择时删除添加的项目:

Private Sub TimeTextMins_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TimeTextMins.SelectedIndexChanged
    Dim itemsToRemove =
        Me.TimeTextMins.Items.Cast(Of ListItem)() _
            .Where(Function(x) x IsNot Me.TimeTextMins.SelectedItem AndAlso CInt(x.Value) Mod 15 <> 0) _
            .ToList()
    For Each item In itemsToRemove
        Me.TimeTextMins.Items.Remove(item)
    Next
End Sub
Private Sub-TimeTextMins\u SelectedIndexChanged(发送方作为对象,e作为事件参数)处理TimeTextMins.SelectedIndexChanged
Dim itemsToRemove=
Me.TimeTextMins.Items.Cast(列表项的)()_
.Where(函数(x)x不是Me.TimeTextMins.SelectedItem和also CInt(x.Value)Mod 15 0)_
托利斯先生()
对于itemsToRemove中的每个项目
Me.TimeTextMins.Items.Remove(项目)
下一个
端接头

您需要将
AutoPostBack=“true”
添加到
asp:DropDownList
标记中。

由于下拉列表只能设置为列表中的值,因此您需要将当前分钟动态添加到页面
Load
事件:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Page.IsPostBack Then
        Dim currentMinute = Date.Now.Minute
        Dim currentMinuteString = CStr(currentMinute).PadLeft(2, "0"c)
        If currentMinute Mod 15 = 0 Then
            Me.TimeTextMins.SelectedValue = currentMinuteString
        Else
            Dim position = (currentMinute \ 15) + 1
            Me.TimeTextMins.Items.Insert(position, currentMinuteString)
            Me.TimeTextMins.SelectedValue = currentMinuteString
        End If
    End If

End Sub
更新

根据您对这个问题的评论,您只希望下拉列表中有15分钟的间隔,我不知道您可以使用标准的下拉列表控件来实现这一点,但是有第三方HTML控件更像combobox。您可以在更改选择时删除添加的项目:

Private Sub TimeTextMins_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TimeTextMins.SelectedIndexChanged
    Dim itemsToRemove =
        Me.TimeTextMins.Items.Cast(Of ListItem)() _
            .Where(Function(x) x IsNot Me.TimeTextMins.SelectedItem AndAlso CInt(x.Value) Mod 15 <> 0) _
            .ToList()
    For Each item In itemsToRemove
        Me.TimeTextMins.Items.Remove(item)
    Next
End Sub
Private Sub-TimeTextMins\u SelectedIndexChanged(发送方作为对象,e作为事件参数)处理TimeTextMins.SelectedIndexChanged
Dim itemsToRemove=
Me.TimeTextMins.Items.Cast(列表项的)()_
.Where(函数(x)x不是Me.TimeTextMins.SelectedItem和also CInt(x.Value)Mod 15 0)_
托利斯先生()
对于itemsToRemove中的每个项目
Me.TimeTextMins.Items.Remove(项目)
下一个
端接头

您需要将
AutoPostBack=“true”
添加到您的
asp:DropDownList
标记中。

您可以使用标准下拉列表来完成此操作,并且可以在列表展开时隐藏当前时间项,而无需回发。您必须编写js函数并将其分配给onmousedown事件,然后执行一些小技巧

首先将您计算的当前时间设置为列表中第一项的“文本”属性(将其“值”保留为“00”),并将代码保留在加载页面上

当页面加载时,您将在下拉列表中看到当前时间作为选定时间。现在,在分配给onmousedown的js函数中,您只需将第一个选项的innerText属性设置为“00”: 您只需使用flag变量执行一次:

var flag = 0;
    function dropDownList_MouseDown()
    {
        if (flag == 0)
        {
            var list = document.getElementById('<%= DropDownList1.ClientID %>');

            list.options[0].innerText = '00';

            flag =1;
        }
    }
var标志=0;
函数dropDownList_MouseDown()
{
如果(标志==0)
{
var list=document.getElementById(“”);
列表。选项[0]。innerText='00';
flag=1;
}
}

您可以使用标准下拉菜单进行操作,并且可以在列表展开时隐藏当前时间项,而无需回发。您必须编写js函数并将其分配给onmousedown事件,然后执行一些小技巧

首先将计算的当前时间设置为“文本”