【发布时间】:2021-01-14 04:18:39
【问题描述】:
目标:在选择 ASP 下拉列表项时改变 ASP 标签文本颜色。如果 ListItem 的值为 false,则 Label 的文本应为红色。否则保持黑色。
问题:只有在页面刷新时才会改变颜色(或者如果在原始页面加载时数据库中的值已经是 false)
我的尝试:
- 我尝试过使用 .Text 和 .SelectedValue
- 我尝试在 DropdownList 的 OnSelectedIndexChanged 期间运行此操作
- 查看了其他文章,但他们提到了用于 SAME 控件的 javascript,而不是在 DIFFERENT 控件上更改颜色而不是选择的控件(例如 ASP.NET Change link button color when clicked without post-back or update panel)
这是否可能纯粹在 C#/asp.net 中而无需刷新页面? 如果我需要做javascript,如何从下拉列表到标签?
HTML:
<div>
<asp:ScriptManager runat="server"></asp:ScriptManager>
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Image ID="img1" runat="server" height="20" width="20" CssClass="providericon"/><sup><asp:Label ID="myLabel" runat="server" Font-Size="20px" CssClass="oval"/></sup>
<asp:Label ID="myLabelMid" runat="server" CssClass="professorname"/>
<asp:DropdownList runat="server" id="ddlAvailability1" AutoPostBack="true" OnSelectedIndexChanged="ddlAvailability_OnSelectedIndexChanged" CssClass="dropdowns">
<asp:ListItem ID="LT1"></asp:ListItem>
<asp:ListItem ID="RT1"></asp:ListItem>
</asp:DropdownList>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<asp:Panel ID="row2" runat="server" Visible="false">
<%--<asp:ScriptManager runat="server"></asp:ScriptManager>--%>
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Image ID="img2" runat="server" CssClass="professoricon"/><sup><asp:Label ID="L2" runat="server" Font-Size="20px" CssClass="oval"/></sup> <asp:Label ID="M2" runat="server" CssClass="professorname"/>
<asp:DropdownList runat="server" id="ddlAvailability2" AutoPostBack="true" OnSelectedIndexChanged="ddlAvailability_OnSelectedIndexChanged" CssClass="dropdowns">
<asp:ListItem ID="LT2"></asp:ListItem>
<asp:ListItem ID="RT2"></asp:ListItem>
</asp:DropdownList>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
CSS:
.professorname {
margin-left: 15px;
position: absolute;
left: 55px;
}
.redtext {
color: red;
margin-left: 15px;
position: absolute;
left: 55px;
}
C#:
Page_Load(){
myLabelMid.CssClass = (ddlAvailability1.SelectedValue == "False") ? "redtext" : "professorname";
M2.CssClass = (ddlAvailability2.SelectedValue == "False") ? "redtext" : "professorname";
M3.CssClass = (ddlAvailability3.SelectedValue == "False") ? "redtext" : "professorname";
}
protected void ddlAvailability_OnSelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddlSender = (DropDownList)sender;
int professorIndex = getProviderIndex(ddlSender.ClientID);
}
public int getProfessorIndex(string ddlSenderClientID)
{
int professorIndex = 0;
switch (ddlSenderClientID)
{
case "ddlAvailability1":
professorIndex = 0;
myLabelMid.CssClass = (ddlAvailability1.SelectedValue == "False") ? "redtext" : "professorname ";
break;
case "ddlAvailability2":
professorIndex = 1;
M2.CssClass = (ddlAvailability2.SelectedValue == "False") ? "redtext" : "professorname ";
break;
}
return professorIndex;
}
【问题讨论】:
-
此链接可能会有所帮助。 stackoverflow.com/questions/36926663/… 有很多方法可以使用原始 JavaScript 或 jQuery MS Ajax 来满足您的要求。另一种方法是使用 ClientScriptmanager docs.microsoft.com/en-us/dotnet/api/… 在第一个响应/请求中将 JS 交付给客户端,多种方式可以满足您的要求。
标签: javascript c# css asp.net