C# 如果不是支票,则加现金

C# 如果不是支票,则加现金,c#,asp.net,vb.net,C#,Asp.net,Vb.net,我运行了Adnan昨晚帮我完成的以下代码(非常感谢Adnan) 基本上,代码检查输入的金额是否为支票。如果为check,则将check值插入chckval 如果是现金,则将现金价值插入cashval 到目前为止,它已经成功了一半。它将支票插入支票字段名,并将0插入现金字段名。这很有效 不起作用的是,如果钱是现金,则将现金插入现金字段名 它会将现金插入现金字段名,但也会将相同的金额插入支票字段名。这不好 如果它是cash,并且插入到cash字段名中,我希望检查值为0 这是最新的代码,再次感谢 Fo

我运行了Adnan昨晚帮我完成的以下代码(非常感谢Adnan)

基本上,代码检查输入的金额是否为支票。如果为check,则将check值插入chckval

如果是现金,则将现金价值插入cashval

到目前为止,它已经成功了一半。它将支票插入支票字段名,并将0插入现金字段名。这很有效

不起作用的是,如果钱是现金,则将现金插入现金字段名

它会将现金插入现金字段名,但也会将相同的金额插入支票字段名。这不好

如果它是cash,并且插入到cash字段名中,我希望检查值为0

这是最新的代码,再次感谢

For x = 1 To 5 Step 1
    dedval = Gridview1.FindControl("ded" & CStr(x))
    chckval = Gridview1.FindControl("chck" & CStr(x))
    chcknumval = Gridview1.FindControl("chcknum" & CStr(x))
    checkboxval = Gridview1.FindControl("chckBox" & CStr(x))
    onetimeval = Gridview1.FindControl("onetime" & CStr(x))
    multival = Gridview1.FindControl("multi" & CStr(x))
    If chckval.Text <> "" And Not checkboxval.Checked Then
        cashval = DirectCast(Gridview1.FindControl("chck" & CStr(x)), TextBox).Text
    Else
        chckval = Gridview1.FindControl("chck" & CStr(x))
    End If
    If dedval.Text <> "-1" And donatechoice.SelectedItem.Value <> "No" Then
        sql += "INSERT INTO employee_ded_amts (employee_id, charity_code, check_amt, chcknum, one_time, bi_weekly, cash, donate_choice, date_stamp) "
        sql += "VALUES ('" & Replace(employee_idLabel.Text, "'", "''") & "','" & Replace(dedval.SelectedValue, "'", "''") & "','" & Replace(chckval.Text, "'", "''") & "','" & Replace(chcknumval.Text, "'", "''") & "','" & Replace(onetimeval.Text, "'", "''") & "','" & multival.Text & "','" & Replace(cashval, "'", "''") & "','" & Replace(donatechoice.SelectedItem.Value, "'", "''") & "','" & Replace(datestamp, "'", "''") & "');"
    End If
    If donatechoice.SelectedItem.Value = "No" Then
        x = 6
        sql += "INSERT INTO employee_ded_amts (employee_id, charity_code, check_amt, chcknum, one_time, bi_weekly, cash, donate_choice, date_stamp) "
        sql += "VALUES ('" & Replace(employee_idLabel.Text, "'", "''") & "','" & Replace(dedval.SelectedValue, "'", "''") & "','" & Replace(chckval.Text, "'", "''") & "','" & Replace(chcknumval.Text, "'", "''") & "','" & Replace(onetimeval.Text, "'", "''") & "','" & Replace(multival.Text, "'", "''") & "','" & Replace(cashval, "'", "''") & "','" & Replace(donatechoice.SelectedItem.Value, "'", "''") & "','" & Replace(datestamp, "'", "''") & "');"
    End If
Next
对于x=1到5步骤1
dedval=Gridview1.FindControl(“ded”和CStr(x))
chckval=Gridview1.FindControl(“chck”和CStr(x))
chcknumval=Gridview1.FindControl(“chcknum”和CStr(x))
checkboxval=Gridview1.FindControl(“chckBox”和CStr(x))
onetimeval=Gridview1.FindControl(“onetime”和CStr(x))
multival=Gridview1.FindControl(“multi”和CStr(x))
如果chckval.Text“”而不是checkboxval.Checked,则
cashval=DirectCast(Gridview1.FindControl(“chck”&CStr(x)),文本框)。文本
其他的
chckval=Gridview1.FindControl(“chck”和CStr(x))
如果结束
如果dedval.Text“-1”和donatechoice.SelectedItem.Value“否”,则
sql+=“插入员工身份证(员工id、慈善机构代码、支票金额、支票金额、一次性、每两周一次、现金、捐赠选择、日期戳)”
sql+=“值('”&Replace(employee_idLabel.Text,“'”)&“,”&Replace(dedval.SelectedValue,“,”)&“,”&Replace(chckval.Text,“,”)&“,”&Replace(chcknumval.Text,“,”,“)&“,”&Replace(onetimeval.Text,“,”,“,”,“,”,“,”&multival.Text&“,”,“,”,“&Replace(chcknumval.Text,”,“,”,”,“,”,“&Replace(donatechoice.SelectedItem.Value,“,”)&“,”&替换(日期戳,“,”)&“;”
如果结束
如果donatechoice.SelectedItem.Value=“否”,则
x=6
sql+=“插入员工身份证(员工id、慈善机构代码、支票金额、支票金额、一次性、每两周一次、现金、捐赠选择、日期戳)”
sql+=“值('”&Replace(employee_idLabel.Text,“'”)&“,”&Replace(dedval.SelectedValue,“,”)&“,”&Replace(chckval.Text,“,”)&“,”&Replace(chcknumval.Text,“,”,“)&“,”&Replace(onetimeval.Text,“,”,“,”,“,”,“,”,“,”&Replace(multival.Text,”,“,”,“,”,“,”,“,”,“,”,”,“,”&Replace(donatechoice.SelectedItem.Value,“,”)&“,”&替换(日期戳,“,”)&“;”
如果结束
下一个
我认为这是一个问题

IF chckval.Text <> "" And Not checkboxval.Checked Then
如果chckval.Text“”而不是checkboxval.Checked,则
声明

===========

更新 如果cashval是字符串类型,请尝试按如下方式更改此行

 cashval = DirectCast(fvEmp.FindControl("chck" & CStr(x)),TextBox).Text;

Kenny我发现FindControl返回控件类型,如果它是TextBox控件,则需要将其转换为TextBox类型,然后您可以使用其Text属性获取字符串。我在上面编辑了它。请立即尝试

在C#中,将这样做

 string cashval = ((TextBox)(fvEmp.FindControl("whatever control name"))).Text;
==============

新更新 Kenny现在我认为这第三行导致了问题。请尝试从For循环中删除这第二行。但是,当删除这第二行时,您还需要为chckval TextBox类型变量赋值,因为在查询中使用它时,它不能为null。可能是您可以分配新的空TextBox

您还可以像制作cashval变量字符串一样制作checkval字符串,这将简化它

但无论您为checkval指定什么值,都要在IF语句中指定它

    If chckval.Text <> "" And Not checkboxval.Checked Then
     cashval = DirectCast(Gridview1.FindControl("chck" & CStr(x)), TextBox).Text
     < SET SOME VALUE FOR chckval here ... which is default value which will be used in SQL server> 
      Else
      chckval = Gridview1.FindControl("chck" & CStr(x))
如果chckval.Text“”而不是checkboxval.Checked,则
cashval=DirectCast(Gridview1.FindControl(“chck”&CStr(x)),文本框)。文本
<在此处为chckval设置一些值…这是将在SQL server中使用的默认值>
其他的
chckval=Gridview1.FindControl(“chck”和CStr(x))

FYI,请参见。另外,FYI,这不是一个论坛。也许这应该打开?您的代码似乎会受到SQL注入攻击。您应该查看SQL语句的参数化。谢谢Adnan,这是国际性的,有两个原因。一个原因是,我在使用cashval时得到了它。类型为“System.Web.UI.Control”的文本值无法转换为“St”但请注意,chckval没有/不需要。text对不起,我的错误。它应该是Dim cashval作为字符串,因为它在标记中不存在。它仍然是同一行,并且仍然表示“类型值'System.Web.UI.Control'无法转换为'String'谢谢你的帮助。错误是,TextBox是一种类型,不能用作表达式。你说你不擅长vb。如果你擅长c#,你可以帮助使用该语言,请这样做,我将尝试转换它。再次非常感谢。我发现的是FindControl返回的控件类型需要转换为TextBox类型,如果它是一个TextBox控件,那么您可以使用它的Text属性来获取字符串。我在上面编辑了它。请立即尝试。
    If chckval.Text <> "" And Not checkboxval.Checked Then
     cashval = DirectCast(Gridview1.FindControl("chck" & CStr(x)), TextBox).Text
     < SET SOME VALUE FOR chckval here ... which is default value which will be used in SQL server> 
      Else
      chckval = Gridview1.FindControl("chck" & CStr(x))