我在asp.net工作。我有一个名为Maybe
的文本框,另一个文本框是Maybe
。现在我想要的是当用户在formidtxt
中输入表单ID时,它应该同时开始检查是否已经存在具有相同ID的表单ID,如果表单ID已经存在于数据库中然后colortxt
文本框的颜色应该变为红色,否则它应该是绿色。
我知道可以通过在文本框中使用事件来完成,但无法理解工作。我的数据库在SQL Server 2008中。
答案 0 :(得分:1)
试试这个C#代码;
private void Page_Load(object sender, EventArgs e)
{
// formidtxt is the name of the textbox
this.formidtxt.TextChanged += FormIDTextBox_TextChanged;
formidtxt.AutoPostBack = true;
}
请注意,此方法是在Page_Load方法中编写的。
TextChanged
是一个事件,它发生在TextBox中修改文本时。
在这种情况下,当formidtxt
(文本框)文本发生更改时,它将调用FormIDTextBox_TextChanged
方法。
private void FormIDTextBox_TextChanged(object sender, EventArgs e)
{
int x = 0;
// convert textbox text (string) to int
Int32.TryParse(formidtxt.Text, out x);
// call IsIDAvailableDAO method
// x is the converted int value
if (IsIDAvailableDAO(x))
{
colortxt.BackColor = System.Drawing.Color.Red;
}
else
{
colortxt.BackColor = System.Drawing.Color.Green;
}
}
此方法将从文本框(formidtxt
)获取文本,并将其作为参数发送到IsIDAvailableDAO
方法。
使用IsIDAvailableDAO
方法,我们可以检查数据库中是否有ID。如果可用,则该方法将返回TRUE
布尔值。如果没有,它将返回False
布尔值。
根据该布尔值,您可以根据需要更改colortxt
文本框的颜色或执行其他操作。
private Boolean IsIDAvailableDAO(int id)
{
Boolean output;
using (SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Testing;Integrated Security=True"))
{
string query = @"SELECT CASE WHEN COUNT(ID) >= 1 THEN CAST( 1 as BIT ) ELSE CAST( 0 as BIT )
END As IsAvailable
FROM TableName
WHERE ID = @ID";
SqlCommand cmd = new SqlCommand(query, myConnection);
cmd.Parameters.AddWithValue("@ID", id);
myConnection.Open();
output = (Boolean)cmd.ExecuteScalar();
myConnection.Close();
}
return output;
}
在此方法(IsIDAvailableDAO
)中,请根据需要更改查询(TableName
,ID
等)和connectionstring
。
您还必须添加此命名空间:using System.Data.SqlClient;
https://www.connectionstrings.com/sql-server-2008/
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/namespaces/using-namespaces