将数据源中的值与字符串进行比较
问题描述:
我只是难以理解如何处理此代码,我只是试图在插入客户表单上实现“无重复”捕获,但它只是通过我的if语句每次都去别的地方。这是来源。我也尝试了.Equals具有相同的结果:(将数据源中的值与字符串进行比较
Protected Sub srcAllClients_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) Handles srcAllClients.Inserting
'Establish Variables
Dim emailAddress As String
Dim srcUsers As SqlDataSource = New SqlDataSource()
srcUsers.ConnectionString = ConfigurationManager.ConnectionStrings("ISSD21ConnectionString").ConnectionString
Dim view As DataView
view = DirectCast(srcUsers.Select(DataSourceSelectArguments.Empty), DataView)
srcUsers.SelectCommand = "SELECT EmailAddress FROM ISSDClients"
srcUsers.DataSourceMode = SqlDataSourceMode.DataReader
Dim reader As IDataReader
reader = DirectCast(srcUsers.Select(DataSourceSelectArguments.Empty), IDataReader)
emailAddress = FormView1.FindControl("txtEmail").ToString
While reader.Read()
If reader("EmailAddress") = (emailAddress) Then
lblError.Text = "Your Email is NOT Unique!"
'this is where we cancel the update and return an error
Else
lblError.Text = "Your Email is Unique!"
'nothing needs to happen, maybe just tell them that it went through
End If
End While
reader.Close()
End Sub
答
emailAddress = FormView1.FindControl("txtEmail").ToString
只是要返回字符串“System.Web.UI.WebControls.TextBox”你不访问的实际属性控制那将保存文本值,您只需在控件本身上调用ToString()
。
试试这个:
Dim emailBox As TextBox = CType(FormView1.FindControl("txtEmail"), TextBox);
emailAddress = emailBox.Text
答
除了Womp的答案...
于通过电子邮件记录运行while循环,你需要打出来的循环一旦你找到一个匹配的电子邮件,并提醒用户。
if reader("EmailAddress") = (emailAddress) then
'1. Break from the Loop
End if
答
我会建议你通过emailAddress
到SQL Server作为参数。
Select Count(EmailAddress) From ISSDClients
Where EmailAddress = @EmailAddress
执行使用ExecuteScalar
这一说法,并把结果作为一个整数。如果结果为零,则表示没问题,否则显示错误。
这样做可以避免使用while循环,并且如果表中有很多行,应该快得多。
您还需要从电子邮件文本框中获取Text属性。
emailAddress = FormView1.FindControl("txtEmail").Text.ToString
答
你可能想看看的String.Compare方法,这将使它更容易不尊重之类的区分大小写和文化比较。它确实将空白字符视为字符串的一部分,因此您可能希望在调用字符串之前修剪字符串以帮助标准化。
例如,下面的字符串将被视为等于:
var firstString = "some StrinG to Compare ";
var secondString = " somE string to COMPARE";
var equal = (String.Compare(firstString.Trim(), secondString.Trim(), StringComparison.InvariantCultureIgnoreCase) == 0);
好点!我错过了这个在我原来闪闪发光的... – Achilles 2010-06-24 18:18:57
Thx的小费,就在这笔钱。只是你给我的代码... 错误1'TextBox'是一种类型,不能用作表达式。 \t 错误2')'预计。 – javArc 2010-06-24 18:23:04
啊,对不起,我的VB很生锈。铸造是不同的 - 代码应该是emailAddress = CType(FormView1.FindControl(“txtEmail”),TextBox).Text – womp 2010-06-24 18:25:26