我有文本框,用户可以输入是或否,一旦他们做出选择,那么我正在写一张桌子。但在我将值写入表之前,我想更改它,因为该字段只需要1或0.我想在后面执行代码更改,如下所示: 如果是,则将其更改为1 如果是NO,则将其更改为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;
答案 0 :(得分: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;
答案 1 :(得分:1)
首先,如果您可以更改代码,请使用复选框。单选按钮甚至是2项组合框更容易接受。但输入是/否?不是很友好的IMO。
要回答您的问题,您应该使用以下内容:
int myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text.Equals("Yes", StringComparison.OrdinalIgnoreCase) ? 1 : 0;
答案 2 :(得分:1)
正如上面的评论中所指出的,复选框最适合这种输入。要求用户键入“是”或“否”都很好,但如果用户键入“可能”,您如何处理?此外,您必须考虑“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.
}
答案 3 :(得分:0)
要将yes / no转换为boolean,您可以使用以下单行:
bool result = (myString == "yes") ? true : false;
答案 4 :(得分: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团队为你付出了很多努力。