C# 如果SQL Server表中不存在值,请替换ASP.NET webform中文本框中的值
我在ASP.NET web表单上有一个文本框,id为C# 如果SQL Server表中不存在值,请替换ASP.NET webform中文本框中的值,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我在ASP.NET web表单上有一个文本框,id为txt\u branch\u name 如果用户输入的值没有出现在SQL Server表的列中,我想将文本框中的值更改为“” 如何在TextChanged事件中执行此操作 protected void txt_branch_name_TextChanged(object sender, EventArgs e) { } 页面加载中很可能有一个方法,即设置文本框字段。因此,您必须使用条件、更新面板或其他方法来说明这一点。您所经历的行为的原因是页
txt\u branch\u name
如果用户输入的值没有出现在SQL Server表的列中,我想将文本框中的值更改为“”
如何在TextChanged
事件中执行此操作
protected void txt_branch_name_TextChanged(object sender, EventArgs e)
{
}
页面加载中很可能有一个方法,即设置文本框字段。因此,您必须使用条件、更新面板或其他方法来说明这一点。您所经历的行为的原因是页面加载事件将在文本框更改事件实际触发之前执行
if(!Page.IsPostback)
{
// Set your fields.
}
否则,您需要使用“更新”面板,该面板的逻辑可以在Microsoft Developer Network或Stack Overflow上找到,我在我的个人资料中找到了几个关于它的答案。谢谢,我是这样做的,这是可行的:
protected void txt_branch_name_TextChanged(object sender, EventArgs e)
{
int BranchExist = 0;
if (sqlcon.State == ConnectionState.Closed)
sqlcon.Open();
SqlCommand check_User_Name
= new SqlCommand("SELECT COUNT(* ) FROM [MASAB].[dbo].[Branchas_Of_Banks] NOLOCK where [Branch_Name_And_Code] ='" + txt_branch_name.Text+"'", sqlcon);
BranchExist = (int)check_User_Name.ExecuteScalar();
if (BranchExist == 0)
txt_branch_name.Text = "";
听起来你在做输入验证。有专门的方法可以做到这一点。通常是那些允许客户端自动完成的。我不确定回发是否会引发TextChanged事件/还有什么可能引发该事件。你真的需要了解这个页面的生命周期:我在这个字段上有autocomplete,我想防止客户输入的值没有出现在这个列表中。我尝试了很多东西,但没有任何帮助。如果客户端出现错误和/或存在竞争条件,您希望执行服务器端验证吗?好主意但是,再次探讨在ASP.Net中进行验证的正确方法。这是一个非常普遍的问题,所以应该有一些东西。我只能找到Validate函数()。但要使用它,您必须创建自己的派生类。肯定还有更好的办法。谷歌搜索引擎很快就找到了3篇关于这一主题的文章:| |这不太理想。您正在打开一个可处置资源(SQL Conenction),但没有正确处置它。更重要的是,它让您担心您可能实际上在多个代码段上共享同一个连接。在同一段代码中创建、使用、处置也是我坚持的模式。通常使用using语句。SqlConnection有一些集成的连接池,最好不要保留连接。我会检查更好的解决方案。谢谢