【问题标题】:Input string in correct format. VB.net - New to this so help required以正确格式输入字符串。 VB.net - 新手所以需要帮助
【发布时间】:2016-08-18 17:22:32
【问题描述】:

我的页面和我正在处理的代码存在一些问题。请看代码:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load

        Dim dtTable As DataTable = Nothing
        Dim intConnectionId As Integer = 0

        If  Page.IsPostBack Then

            ' Get user data from session
            With HttpContext.Current

                intConnectionId = CInt(result.Value)
            End With
        End If

        ' Remove connection
        modConnections.Delete(intConnectionId)

        ' Clear desks attahced to connection
        modDeskText.ClearUserDesk(intConnectionId)

        Using sqlCommand As New SqlCommand
            With sqlCommand
                .CommandText = "usp_connectsdetailedlist"
                .CommandType = CommandType.StoredProcedure
            End With

            Execute(sqlCommand, dtTable)
        End Using

        With Rep1
            .DataSource = dtTable.DefaultView
            .DataBind()
        End With

        If Not IsNothing(dtTable) Then
            dtTable.Dispose()
        End If

    End Sub

[FormatException: Input string was not in a correct format.]
   Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat) +213
   Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value) +90

[InvalidCastException: Conversion from string "" to type 'Integer' is not valid.]
   Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value) +238
   frmConnects2.Page_Load(Object sender, EventArgs e) in D:\Source Code\PTS\PTS Online .NET - Copy\PTS Online .NET\PTS Online .NET stu\frmConnects2.aspx.vb:17
   System.Web.UI.Control.OnLoad(EventArgs e) +95
   System.Web.UI.Control.LoadRecursive() +59
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678

上线:

intConnectionId = CInt(result.Value) 

我收到上述错误。无论我做什么,我都无法将数据转换为我需要工作的格式。我现在明白这与右侧代码无关。

我的目标是从表中获取数据,放入文本框 (<input type="text" id="result" runat="server" />) id="result",然后使用 SQL 中选择的记录的“id”删除连接。见下表:

<ItemTemplate> 
                        <tr class="<%# ReturnValuesAsColor(Eval("online"), Eval("mobile"), Eval("server_proc"))%>">
                        <td><%# Eval("id").ToString%></td>
                        <td><%# Eval("user_id").ToString%></td>
                        <td><%# Eval("user_name").ToString%></td>
                        <td><%# Eval("workstation_name").ToString%></td>
                        <td><%# Eval("ip_address").ToString%></td>
                        <td><%# Eval("connect_date").ToString%></td>
                        <td><%# Eval("refresh_date").ToString%></td>
                        <td><%# Eval("app_ver").ToString%></td>
                        <td><%# Eval("app_date").ToString%></td>
                        <td><%# CBool(Eval("get_messages_flag")).ToString%></td>
                        <td><%# FixNumbers(Eval("message_type_flags"))%></td>
                        <td><%# Eval("online").ToString%></td>
                        <td><%# Eval("mobile").ToString%></td>
                        <td><%# Eval("group_name").ToString%></td>
                        <td><%# Eval("server_proc").ToString%></td>
                        <td><input type="submit" class="ui-button ui-widget ui-state-default ui-corner-all" value="delete connection" onclick="clearText(result); CopyId(<%# Eval("id").ToString%>);" /></td>
                        </tr>

                    </ItemTemplate>

使用的JS:

<script> 
                function CopyId(num) {
                    var txt = document.getElementById("<%= result.ClientID%>").value;
                    txt = num;
                    document.getElementById("<%= result.ClientID%>").value = txt;
                    }
 </script>

抱歉,如果我错过了任何内容或缺少信息。非常感谢任何帮助。

【问题讨论】:

  • 问题很清楚result.Value 不是整数。这是在哪里填充的?
  • 原件来自 sql server 作为一个 6 位长的数字,如果我正确理解您的问题,它是表中的“id”列。我可以看到 result.value 不是整数,但我似乎无法将其转换为一个..
  • 抱歉,这个问题并不完美,但为什么要投反对票?清楚地说我是新人,阅读问题发布规则并确保我把所有东西都放进去了。请解释一下失望吗?

标签: vb.net html postback code-behind


【解决方案1】:

在 VB 中,您需要检查您的变量以确保它不为空、null 和空,并且不包含任何非数字字符。我也会使用 CTYPE 和 Trim。仅当字符串包含数值时,转换才会起作用。如果您在填充字符串时遇到问题,那么您需要检查填充它的代码。恐怕我不懂JS。

【讨论】:

  • 是的,谢谢,我以为我要疯了!我得到了其他人建议的价值。一旦我拿起我需要的东西,它就开始工作了。感谢大家的意见。
【解决方案2】:

您没有向我们展示resultresult.Value 的定义,所以这是一个有根据的猜测。

尝试在数据库中测试空值:

If IsDbNull(result.Value) Then
    intConnectionId = 0 
Else
    intConnectionId = CInt(result.Value)
End If

【讨论】:

  • 按照您所说的进行了测试,因为我认为 result.value 获得了“”。“”。看起来问题正在发生,这是我试图捕获的值。我仍然必须注释掉你所问问题的后半部分,因为它只是从 result.ClientID 得到相同的错误,我得到“cphMain_result”,这是正确的,但应该是一个 6 位数字,所以我可能错过了转换什么地方?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
相关资源
最近更新 更多