1

在页面加载下拉列表的默认值时,告诉用户选择可能的值。
是男性还是女性。如果用户没有选择以下任何一个值:男性或女性,则应禁用生成患者编号按钮。
否则,根据选择的值生成患者性别。目前,如果下拉列表为默认值,我仍然可以生成患者编号。
有人帮我找出错误的原因。我更喜欢正确的代码。

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;

        }


    }
4

3 回答 3

2

您的代码中的问题是您正在使用 的Text属性DropDownList来确定用户选择了什么(SelectedValue改用)。该Text属性返回当前选定项目的文本,""如果没有选择项目:

MSDN

Text 属性获取和设置与 SelectedValuee 属性相同的值。SelectedValue 属性通常用于确定 ListControl 控件中选定项的值。如果未选择任何项目,则返回一个空字符串 ("")

现在看看你的代码(记住String.Empty什么都没有选择):

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;
}

解决方案:

使用 aRequiredFieldValidator来确保用户选择了性别。您可以使用该InitialValue属性告诉它您的"-- please select --"项目的价值。

   <asp:DropDownList id="DdlGender" runat="server" >
        <asp:ListItem Text="-- please select --" Value="-1"></asp:ListItem>
        <asp:ListItem Text="female" Value="1"></asp:ListItem>
        <asp:ListItem Text="male" Value="2"></asp:ListItem>
    </asp:DropDownList>

  <asp:RequiredFieldValidator id="RequiredGender" 
       InitialValue="-1" 
       ControlToValidate="DdlGender"
       ErrorMessage="Please select gender!"
       runat="server"/>
于 2013-01-29T15:20:44.310 回答
0

我会切换您的逻辑,以便您明确检查男性,女性,然后再检查。

if (gender=="Male")
{
    ...    
}
else if (gender=="Female")
{
    ...
}
else
{
    ...
}

要回答您的实际问题,您的下拉列表的值可能不正确。也许是外壳或杂散的字符空间。你可以尝试类似的东西

String gender = drl_gender.Text.Trim().ToLower();

并检查小写的男性、女性。在线上放一个断点或添加一个手表,看看实际值是多少。

于 2013-01-29T15:19:48.853 回答
0

您要做的是将按钮disabled默认设置为。
然后你应该有一个与 DropDownList 挂钩的事件:

protected void DropDownList_IndexChanged(object sender, EventArgs e)
{
  var dd = (DropDownList) sender;
  patient_num.Enabled = dd.SelectedIndex > 0;
}
于 2013-01-29T15:23:37.507 回答