我有一个月份下拉列表,例如' 1月' '二月' ...'十二月'在asp.net c#
中<asp:DropDownList ID="dlsalmonth" runat="server" class="form-control form-control-solid placeholder-no-fix">
<asp:ListItem>January</asp:ListItem>
<asp:ListItem>February</asp:ListItem>
<asp:ListItem>March</asp:ListItem>
<asp:ListItem>April</asp:ListItem>
<asp:ListItem>May</asp:ListItem>
<asp:ListItem>June</asp:ListItem>
<asp:ListItem>July</asp:ListItem>
<asp:ListItem>August</asp:ListItem>
<asp:ListItem>September</asp:ListItem>
<asp:ListItem>October</asp:ListItem>
<asp:ListItem>November</asp:ListItem>
<asp:ListItem>December</asp:ListItem>
</asp:DropDownList>
<div class="col-md-4" style="margin-top: 2%">
<asp:TextBox ID="txtnextmonth" runat="server" CssClass="form-control" placeholder="Next Month" ReadOnly="true"></asp:TextBox>
</div>
我想要的是当我从这个列表中选择一个月时,我希望在我旁边的文本框中确切地显示下个月。假设我从这个下拉列表中选择二月,那么三月应该显示在我的文本框中。
答案 0 :(得分:2)
你可以尝试这样的事情
// ES5
handler(req, res) {
somethingAsync
.then(res.send.bind(res)) // <- res is explicitly bound to the saved function as its dynamic scope
}
并且也不要忘记添加 protected void dlsalmonth_OnSelectedIndexChanged(object sender, EventArgs e)
{
txtnextmonth.Text = dlsalmonth.SelectedItem.Text == "December" ?
dlsalmonth.Items[0].Text :
dlsalmonth.Items[dlsalmonth.SelectedIndex + 1].Text;
}
或不会转到AutoPostBack="True"
事件
答案 1 :(得分:1)
您可以使用SelectedIndexChanged事件,并在该事件中使用selectedIndex属性查找下个月。您将不得不照顾12月,因为下一个项目将是第一个不在下一个索引。您需要将AutoPostBack属性设置为true,以便在下拉选择更改时进行回发。您还需要绑定SelectedIndexChanged事件。
protected void dlsalmonth_SelectedIndexChanged(object sender, EventArgs e)
{
txtnextmonth.Text = dlsalmonth.Items[(dlsalmonth.SelectedIndex+1)%12].Text;
}
如上所示,可以在服务器端上完成,但建议在客户端上执行以保存回发。你可以用这样的javascript来做到这一点。
在HTML中,绑定onchange javascript事件并使用this
将其传递给dropdownlist对象。
<asp:DropDownList ID="dlsalmonth" runat="server" onchange="dlsalmonthChange(this);" class="form-control form-control-solid placeholder-no-fix">
在Javascript中,将脚本标记放在结束标记之前。获取文本框对象并分配下拉列表的下一个元素,照顾12月和1月。
<script type="text/javascript" language="javascript">
function dlsalmonthChange(sel)
{
document.getElementById("<%= txtnextmonth.ClientID%>").value = sel.options[(sel.selectedIndex+1) % 12].text
}
dlsalmonthChange(document.getElementById("<%= dlsalmonth.ClientID%>")); // to set the textbox on form load
</script>
</body>
我在页面加载时显式调用了dlsalmonthChange,以便在页面加载时第一次设置文本框。
答案 2 :(得分:1)
您可以使用客户端解决方案。这将消除额外的PostBack的需要。
<script type="text/javascript">
$("#<%=dlsalmonth.ClientID %>").change(function () {
var index = $(this).prop('selectedIndex') + 1;
var nextValue = $("#<%=dlsalmonth.ClientID %> option").eq(index % 12).val();
$("#<%=txtnextmonth.ClientID %>").val(nextValue);
});
</script>