所以这有点难以解释我想要实现的目标,但希望你能从我的代码中掌握这个想法。我有一个下拉列表,需要代码将变量设置为true或false,具体取决于下拉值。现在我的工作正常。但是当我调用包含true或false的变量时,从click事件上的按钮调用时它总是为false。即使变量设置为true,如果我更改下拉选择。
我不知道这对其他人是否有意义,但这里是下拉列表的HTML代码。
<div class="col-2 text-right form-group">
<p align="center">Technician Selection</p>
<asp:DropDownList id="TeckSel" AutoPostBack="True" runat="server" OnSelectedIndexChanged="TeckSel_SelectedIndexChanged" CssClass="btn btn-danger dropdown-toggle" Width="100%">
<asp:ListItem Text="Select Technician" Value="-1"></asp:ListItem>
<asp:ListItem Text="Michael" Value="1"></asp:ListItem>
<asp:ListItem Text="Calvin" Value="2"></asp:ListItem>
<asp:ListItem Text="Ben" Value="3"></asp:ListItem>
<asp:ListItem Text="Haydon" Value="4"></asp:ListItem>
<asp:ListItem Text="Luke" Value="5"></asp:ListItem>
<asp:ListItem Text="Liam" Value="6"></asp:ListItem>
</asp:DropDownList>
</div>
这是我的c#。
public partial class _Default : System.Web.UI.Page
{
String TechName = "";
String TeckKey = "";
bool Selected;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void TeckSel_SelectedIndexChanged(object sender, EventArgs e)
{
var DropList = TeckSel.SelectedValue;
switch (DropList)
{
case "-1":
Selected = false;
TechName = "Calvin Reid";
break;
case "1":
TeckKey = "emememe";
TechName = "Dave";
Selected = true;
break;
case "2":
TeckKey = "emememe";
TechName = "Steve";
Selected = true;
break;
}
ActionOutput.Text = TechName + Selected.ToString();
}
protected void ButUnlockAcc_Click(object sender, EventArgs e)
{
ActionOutput.Text = Selected.ToString() + TechName.ToString();
}
}
我应该注意到我有一个名为'ActionOutput'的文本框,还有一个名为'ButUnlockAcc_click'的onclick事件按钮。
为什么当按下按钮时,为什么名为'Selected'的bool的值总是为false,即使在开关中声明它的真实值得赞赏。
答案 0 :(得分:0)
点击按钮后,您需要致电TeckSel_SelectedIndexChanged
设置Selected
的值:
protected void ButUnlockAcc_Click(object sender, EventArgs e)
{
TeckSel_SelectedIndexChanged(sender,e);
ActionOutput.Text = Selected.ToString() + TechName.ToString();
}