我运行了下面的代码,Adnan昨晚帮助了我(非常感谢Adnan)。
基本上,代码会检查输入的金额是否被检查。如果是检查,请将检查值插入chckval。
如果是现金,请将现金值插入现金。
到目前为止,它已经完成了一半。它将检查插入check fieldname并将0插入cash fieldname。这很有效。
如果资金是现金,那么无法将现金插入现金现场名称。
它将现金插入现金字段名称,因为它应该将相同的金额插入到check fieldname中。这不好。
如果是现金并将其插入现金字段名称,我希望检查值为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
statment
答案 0 :(得分:1)
===========
如果cashval是字符串类型,请尝试更改此行,
cashval = DirectCast(fvEmp.FindControl("chck" & CStr(x)),TextBox).Text;
肯定的事情我发现FindControl返回控件类型,如果它是一个TextBox控件需要转换为TextBox类型,然后你可以使用它的Text属性来获取字符串。我在上面编辑了它。现在试试吧。
在C#中它会像这样完成。
string cashval = ((TextBox)(fvEmp.FindControl("whatever control name"))).Text;
==============
chckval = Gridview1.FindControl("chck" & CStr(x))
肯尼现在这第三条线引起了我相信的问题。尝试从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))