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

ソリューション:

代わりにaを使用RequiredFieldValidatorして、ユーザーが性別を選択したことを確認します。プロパティを使用して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

あなたがしたいことは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 に答える
0

男性、女性、それ以外を明示的にチェックするように、ロジックを切り替えます。

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

実際の質問に答えるには、ドロップダウン リストの値が正しくない可能性があります。たぶん、それはケーシングまたは迷子の文字スペースです。次のようなものを試すことができます

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

小文字の男性、女性をチェックします。行にブレーク ポイントを配置するか、ウォッチを追加して、実際の値を確認します。

于 2013-01-29T15:19:48.853 に答える