2016-04-25 7 views
-1

У меня возникли проблемы со страницей и кодом, над которым я работаю. см код:Введите строку в правильном формате. VB.net - Новое для этого, поэтому нужна помощь

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", а затем использовать «id» записи, выбранной в SQL, чтобы удалить соединение. смотри таблицу ниже:

<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> 

Извините, если я пропустил что-нибудь или есть недостаток информации. Любая помощь очень ценится.

+0

Вопрос довольно ясен: 'result.Value' не является Integer. Где это заполняется? –

+0

оригинал поставляется с sql-сервером длиной 6 цифр, это столбец «id» в таблице, если я правильно понимаю ваш вопрос. Я вижу, что result.value не является целым числом, но я не могу скрыть его до одного. – BarryWhite

+0

Извините, вопрос не был идеальным, но почему downvote? Понятно, что я был новым, читал вопросы о правилах по почте и делал все, чтобы все было. Пожалуйста, объясните, что такое downer? – BarryWhite

ответ

0

Вы не указали нам определение для result или result.Value, так что это обоснованное предположение.

Try тестирование на нулевое значение в базе:

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

проверено, как вы сказали, я думаю, получаю «". "" Для result.value. Похоже, что проблема происходит до того, как это значения, которые я пытаюсь захватить. Мне до сих пор приходится комментировать последнюю часть того, что вы просили, поскольку она просто бомбит в противном случае с теми же ошибками. Из result.ClientID. возможно, отсутствует конверсия где-нибудь? – BarryWhite

0

в VB вам нужно, чтобы проверить переменную, чтобы убедиться, что он не пустой, пустой, & ничего и не содержит никаких не числовых символов. Я также использовал CTYPE и Trim. Преобразование будет работать, только если строка содержит числовое значение. Если у вас возникла проблема с заполнением строки, вам необходимо проверить код, в котором он заполнен. Боюсь, я не знаю JS.

+0

да, спасибо, я думал, что я собираюсь бананы! я получал значение, как это было предложено другими. Как только я поднял то, что мне нужно, он начал работать. Спасибо за вклад от всех. – BarryWhite

+0

no * ценность извинения – BarryWhite