为什么我收到此错误“在0位vb.net没有行”?

时间:2017-06-28 09:43:37

标签: vb.net

我正在尝试将 LANG_OBJ.TEXT 的值添加到DataTableRow

添加时我收到错误:

  

位置0没有行

dtsaveTranslate = checkTranslateValues()
lang_id_text CType(Controls.Find("txt_id"True).FirstOrDefault(),TextB`enter code here`ox)
lang_de_text = CType(Controls.Find("txt_de", True).FirstOrDefault(), TextBox)
lang_row = dtsaveTranslate.NewRow()
lang_row("de") = lang_de_text
For Each row As DataRow In dtlang.Rows
    lang_iso = Convert.ToString(row("ISO"))
    lang_obj = CType(Controls.Find("txt_" + lang_iso, True).FirstOrDefault(), TextBox)
    Dim len As Integer = lang_obj.Text.Length
    Dim count_de As Integer = lang_de_text.Text.Length
    progress.ProgressValue = len + 1
    If Convert.ToString(row("isUbersetzen")) = "True" AndAlso lang_iso <> "de" Then
        lang_obj.Text = lanClass.GoogleApiTranslate("de", Convert.ToString(row("ISO")), lang_de_text.Text.Trim())
        lang_row(lang_iso) = lang_obj.Text
    Else
        count_txt = 0
    End If
Next
dtsaveTranslate.Rows.Add(lang_row)

1 个答案:

答案 0 :(得分:0)

首先,您需要确保dtLang有行,然后尝试循环它们! 您需要确保dtLang已加载数据。你应该先研究它为什么不包含任何行。从上面的代码我无法看到如何在那里加载行。因此,正确检查应从:

开始
If dtlang.Rows.count > 0 '<--- Added a check before looping
    For Each row As DataRow In dtlang.Rows
        lang_iso = Convert.ToString(row("ISO"))
        lang_obj = CType(Controls.Find("txt_" + lang_iso, True).FirstOrDefault(), TextBox)
        Dim len As Integer = lang_obj.Text.Length
        Dim count_de As Integer = lang_de_text.Text.Length
        progress.ProgressValue = len + 1
        If Convert.ToString(row("isUbersetzen")) = "True" AndAlso lang_iso <> "de" Then
            lang_obj.Text = lanClass.GoogleApiTranslate("de", Convert.ToString(row("ISO")), lang_de_text.Text.Trim())
            lang_row(lang_iso) = lang_obj.Text
        Else
            count_txt = 0
        End If
    Next
End If