-3

我有文本框,用户可以输入“是”或“否”,一旦他们做出选择,我就会写到一张桌子上。但是在我将值写入表之前,我想更改它,因为该字段只需要 1 或 0。我想在后面的代码中进行更改,如下所示:如果是 YES,则将其更改为 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 项组合框更容易接受。但是输入是/否?IMO 不是很友好。

要回答您的问题,您应该使用以下内容:

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

正如上面评论中所指出的,复选框最适合这种输入。要求用户输入“是”或“否”都很好,但如果用户输入“也许”,你如何处理呢?此外,您必须考虑到“YES”(大写)与“yes”(小写)等不一样。

如果您绝对别无选择,只能使用文本框,那么以下内容应该这样做,但对于您的更大问题来说,这是一个不好的解决方案。

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

要将是/否转换为布尔值,您可以使用这一行:

bool result = (myString == "yes") ? true : false;
于 2013-03-04T18:26:01.773 回答
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");

注意弯曲的红线,Visual Studio 团队为您付出了很多努力。

于 2013-03-04T18:28:02.410 回答