【问题标题】:If not Check then Add to Cash如果不是检查,则添加到现金
【发布时间】:2011-09-09 03:01:08
【问题描述】:

我运行了 Adnan 昨晚帮我解决的以下代码(非常感谢 Adnan)。

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

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

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

如果钱是现金,则将现金插入现金字段名是行不通的。

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

如果是现金并插入现金字段名,我希望校验值为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

我觉得有问题

IF chckval.Text <> "" And Not checkboxval.Checked Then

声明

【问题讨论】:

标签: c# asp.net vb.net


【解决方案1】:

============

更新

如果 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;

==============

新更新

chckval = Gridview1.FindControl("chck" & CStr(x))

肯尼现在这第三行导致了我认为的问题。尝试从 For 循环中删除第二行。但是,当您删除第二行时,您还需要为您的 chckval 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))

【讨论】:

  • 谢谢阿德南,这是出于两个原因。一,当我将它作为 cashval.text 时,我得到了“System.Web.UI.Control”类型的值不能转换为“String”。但也要注意 chckval 没有/不需要 .text
  • 对不起,我的错。它应该是 Dim cashval As String 因为它不存在于标记中。
  • 它仍然是同一行,它仍然在说“'System.Web.UI.Control'类型的值不能转换为'String'。”谢谢你帮助我。
  • 错误提示,TextBox 是一种类型,不能用作表达式。你说你vb不好。如果您擅长 c# 并且可以协助使用该语言,请这样做,我会尝试转换它。再次非常感谢您。
  • Kenny 我发现 FindControl 返回的 Control Type 如果它是 TextBox 控件,则需要将其转换为 TextBox 类型,然后您可以使用它的 Text 属性来获取字符串。我在上面编辑了它。立即尝试。
猜你喜欢
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 2015-04-04
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多