在页面加载时,下拉列表的默认值告诉用户选择有效值
其中男性或女性。如果用户未选择以下任一值:男性或女性,则应禁用Genereate PatientNumber按钮。
否则,根据值select生成患者性别。
目前,如果下拉列表处于默认值,我仍然可以生成patientNumber
有人帮我解决错误的原因。我更喜欢正确的代码。
protected void patient_num_Click(object sender, EventArgs e)
{
String gender = drl_gender.Text.ToString();
string patientNumber = " ";
RegistrationNumber Register_patient = new RegistrationNumber();
patient_num.Enabled = false;
if (gender=="Select Gender")
{
patient_num.Enabled = false;
}
else if (gender=="Male")
{
patient_num.Enabled = true;
patientNumber = Register_patient.GeneratePatientNumber(Gender.Male).ToString();
patientNumber = patientNumber.Replace("/", "-");
txtpatientNum.Text = patientNumber;
}
else
{
patient_num.Enabled = true;
patientNumber = Register_patient.GeneratePatientNumber(Gender.Female).ToString();
patientNumber = patientNumber.Replace("/", "-");
txtpatientNum.Text = patientNumber;
}
}
答案 0 :(得分:2)
您的代码中的问题是您使用Text
的{{1}}属性来确定用户选择了什么(而不是使用DropDownList
)。如果未选择任何项目,则SelectedValue
属性会返回当前所选项目但Text
的文字:
MSDN:
Text属性获取并设置与SelectedValuee相同的值 财产呢。 SelectedValue属性通常用于 确定ListControl控件中所选项的值。 如果未选择任何项目,则返回空字符串(“”)。
现在看看你的代码(当没有选择任何东西时记住""
):
String.Empty
解决方案:
使用RequiredFieldValidator
代替确保用户选择了性别。您可以使用InitialValue
属性告诉它if (gender=="Select Gender")
{
patient_num.Enabled = false;
}
....
else
{
patient_num.Enabled = true;
// here we are!
patientNumber = Register_patient.GeneratePatientNumber(Gender.Female).ToString();
patientNumber = patientNumber.Replace("/", "-");
txtpatientNum.Text = patientNumber;
}
项的值。
"-- please select --"
答案 1 :(得分:0)
我会改变你的逻辑,以便你明确检查男性,女性,然后。
if (gender=="Male")
{
...
}
else if (gender=="Female")
{
...
}
else
{
...
}
要回答您的实际问题,您的下拉列表的价值可能并不正确。也许它是套管或流浪角色空间。你可以试试像
这样的东西String gender = drl_gender.Text.Trim().ToLower();
并检查小写男性,女性。在线上放置一个断点或添加一个手表,看看实际值是什么。
答案 2 :(得分:0)
您要执行的操作是默认情况下将按钮设置为disabled
然后你应该有一个挂钩到DropDownList的事件:
protected void DropDownList_IndexChanged(object sender, EventArgs e)
{
var dd = (DropDownList) sender;
patient_num.Enabled = dd.SelectedIndex > 0;
}