-3

ユーザーが[はい]または[いいえ]のいずれかを入力できるテキストボックスがあり、ユーザーが選択すると、テーブルに書き込みます。しかし、値をテーブルに書き込む前に、フィールドは1または0のいずれかしか受け取らないため、値を変更したいと思います。次のようにコードビハインドで変更を行います。YESの場合は1に変更し、NOの場合は1に変更します。 0に変更します。変更したら、新しい変数を取得してテーブルに挿入します。これが私のコードです:

string myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text.ToString();

 sqlcmd.CommandText = "INSERT INTO MyTable(myvalue) VALUES(@myvalue)";                 
                    sqlcmd.Parameters.Clear();
                    sqlcmd.Parameters.Add("@myvalue", SqlDbType.VarChar).Value = ServerName;
4

5 に答える 5

1

1 または 1 (ビット) のみを受け入れるデータベース列がある場合は、チェックボックスやラジオ ボタンなどの対応する UI 要素を使用する必要があります。

ただし、(何らかの理由で) テキストボックスを使用する必要があり、「はい」と「はい」以外の代わりに「はい」と「いいえ」を明示的にチェックする必要がある場合:

bool valueIsTrue = false;
string myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text;
if (myValue.ToLower() == "yes")
   valueIsTrue = true;
else if (myValue.ToLower() == "no")
   valueIsTrue = false

たとえば、チェックボックスを使用している場合は、次のように簡単に実行できます。

bool value = ((CheckBox)DV_Port.FindControl("chkMyValue")).Checked;
于 2013-03-04T18:26:15.363 に答える
1

まず、コードを変更できる場合は、チェックボックスを使用します。ラジオ ボタンまたは 2 項目のコンボ ボックスでさえ、より受け入れられます。しかし、yes/no と入力しますか? あまり友好的ではないIMO。

質問に答えるには、次を使用する必要があります。

int myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text.Equals("Yes", StringComparison.OrdinalIgnoreCase) ? 1 : 0;
于 2013-03-04T18:26:31.530 に答える
1

上記のコメントで指摘されているように、この種の入力にはチェックボックスが最適です。ユーザーに「はい」または「いいえ」と入力するよう求めるのは非常によいことですが、ユーザーが「多分」と入力した場合はどのように処理しますか? また、「はい」(大文字)が「はい」(小文字)と同じに評価されないことなどを考慮する必要があります。

テキストボックスを使用する以外に絶対に選択肢がない場合は、次のようにする必要がありますが、より大きな問題に対する悪い解決策です。

string myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text;

if (myvalue.Equals("YES", StringComparison.OrdinalIgnoreCase))
{
    //Change to 1
}
else if (myvalue.Equals("NO", StringComparison.OrdinalIgnoreCase))
{
    //Change to 0
}
else
{
    //You should probably tell the user that their input is in an incorrect
    //format here.
}
于 2013-03-04T18:30:08.917 に答える
0

何かのようなもの

string myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text;
sqlcmd.CommandText = "INSERT INTO MyTable(myvalue) VALUES(@myvalue)";                 
                    sqlcmd.Parameters.Add("@myvalue", SqlDbType.Bit, myValue == "Yes");

波状の赤い線に注意してください。VisualStudioチームはそれらに多大な努力を払っています。

于 2013-03-04T18:28:02.410 に答える
0

yes/no をブール値に変換するには、次の 1 行を使用できます。

bool result = (myString == "yes") ? true : false;
于 2013-03-04T18:26:01.773 に答える