2013-07-17 2 views
0

Когда я запускаю свой код на C#, я получаю эту ошибку: Строка ввода не была в правильном формате. и он подчеркивает этот код:Строка ввода не была в правильном формате?

 theTWAValue=Convert.ToInt32(theTWALabel.Text); 

Почему это происходит?

Дополнительная информация:

Весь C# функция:

<script runat="server"> 
       protected void YourListView_Load(object sender, EventArgs e) 
{ 
    Label theTWALabel; 
int theTWAValue; 
foreach (ListViewItem item in YourListView.Items) 
{ 
     theTWALabel = (Label)item.FindControl("TWALabel"); 
    theTWAValue = Convert.ToInt32(theTWALabel.Text); 
    if (theTWAValue >= 0) 
    { 
     if (theTWAValue < 90) 
      theTWALabel.ForeColor = System.Drawing.Color.Yellow; 
     else 
      theTWALabel.ForeColor = System.Drawing.Color.Red; 
    } 

} 
} 

       </script> 

Вот остальная часть кода:

<asp:SqlDataSource id="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:2007 SoundAssist VER 1.0.5 05-12-2011 (2013-06-24)ConnectionString %>" ProviderName="<%$ ConnectionStrings:2007 SoundAssist VER 1.0.5 05-12-2011 (2013-06-24)ConnectionString.ProviderName %>" SelectCommand="SELECT [Plant] FROM [PLANT]"> 
    </asp:SqlDataSource> 
    <asp:DropDownList id="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="Plant" DataValueField="Plant" Height="85px" Width="393px"> 
    </asp:DropDownList> 
    <asp:SqlDataSource id="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:2007 SoundAssist VER 1.0.5 05-12-2011 (2013-06-24)ConnectionString %>" ProviderName="<%$ ConnectionStrings:2007 SoundAssist VER 1.0.5 05-12-2011 (2013-06-24)ConnectionString.ProviderName %>" SelectCommand="SELECT [Plant], [Group No#] AS column1, [Group] FROM [Temp Table that contains TWA values] WHERE ([Plant] = ?)"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="DropDownList1" Name="Plant" PropertyName="SelectedValue" Type="String" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 
    <asp:DropDownList id="DropDownList2" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource2" DataTextField="Group" DataValueField="column1" Height="30px" Width="394px"> 
    </asp:DropDownList> 
    <asp:SqlDataSource id="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:2007 SoundAssist VER 1.0.5 05-12-2011 (2013-06-24)ConnectionString %>" ProviderName="<%$ ConnectionStrings:2007 SoundAssist VER 1.0.5 05-12-2011 (2013-06-24)ConnectionString.ProviderName %>" SelectCommand="SELECT [Plant], [Group No#] AS column1, [Group], [Job Code] AS Job_Code, [Job Function] AS Job_Function, [Job Classification] AS Job_Classification FROM [Temp Table that contains TWA values] WHERE (([Plant] = ?) AND ([Group No#] = ?))"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="DropDownList1" Name="Plant" PropertyName="SelectedValue" Type="String" /> 
      <asp:ControlParameter ControlID="DropDownList2" Name="column1" PropertyName="SelectedValue" Type="String" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 
    <asp:DropDownList id="DropDownList3" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource3" DataTextField="Job_Classification" DataValueField="Job_Classification" Height="17px" Width="384px"> 
    </asp:DropDownList> 
    <asp:ListView id="YourListView" OnLoad="YourListView_Load" runat="server" DataSourceID="SqlDataSource4"> 
     <ItemTemplate> 
      <span style="">Plant: 
      <asp:Label id="PlantLabel" runat="server" Text='<%# Eval("Plant") %>' /> 
      <br /> 
      column1: 
      <asp:Label id="column1Label" runat="server" Text='<%# Eval("column1") %>' /> 
      <br /> 
      Group: 
      <asp:Label id="GroupLabel" runat="server" Text='<%# Eval("Group") %>' /> 
      <br /> 
      Job_Code: 
      <asp:Label id="Job_CodeLabel" runat="server" Text='<%# Eval("Job_Code") %>' /> 
      <br /> 
      Job_Classification: 
      <asp:Label id="Job_ClassificationLabel" runat="server" Text='<%# Eval("Job_Classification") %>' /> 
      <br /> 
      Job_Function: 
      <asp:Label id="Job_FunctionLabel" runat="server" Text='<%# Eval("Job_Function") %>' /> 
      <br /> 
      Job_Description: 
      <asp:Label id="Job_DescriptionLabel" runat="server" Text='<%# Eval("Job_Description") %>' /> 
      <br /> 
      TWA: 
      <asp:Label id="TWALabel" runat="server" Text='<%# Eval("TWA") %>' /> 
      <br /> 
      <br /> 
      </span> 
     </ItemTemplate> 

     </asp:ListView> 
    <asp:SqlDataSource id="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:2007 SoundAssist VER 1.0.5 05-12-2011 (2013-06-24)ConnectionString %>" ProviderName="<%$ ConnectionStrings:2007 SoundAssist VER 1.0.5 05-12-2011 (2013-06-24)ConnectionString.ProviderName %>" SelectCommand="SELECT [Plant], [Group No#] AS column1, [Group], [Job Code] AS Job_Code, [Job Classification] AS Job_Classification, [Job Function] AS Job_Function, [Job Description] AS Job_Description, [TWA] FROM [Temp Table that contains TWA values] WHERE (([Plant] = ?) AND ([Group No#] = ?) AND ([Job Classification] = ?))"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="DropDownList1" Name="Plant" PropertyName="SelectedValue" Type="String" /> 
      <asp:ControlParameter ControlID="DropDownList2" Name="column1" PropertyName="SelectedValue" Type="String" /> 
      <asp:ControlParameter ControlID="DropDownList3" Name="Job_Classification" PropertyName="SelectedValue" Type="String" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 
+2

Каково значение 'theTWALabel.Text', когда это не удается? Кроме того, вы должны учитывать 'Int32.TryParse', потому что вы читаете из текстового поля (которое не ограничено в противном случае?) – Brad

ответ

2

Вы должны реально проверить, что вход действительно - я хотел бы использовать TryParse вместо функции Convert:

if (int.TryParse(theTWALabel.Text, out theTWAValue)) 
{ 
} 

Обновление пост-редактирования

Я могу ошибаться, но я не думайте, что значения элементов управления Label отправляются обратно на сервер - это объясняет, почему они отображаются как пустые. В любом случае установка цветов из события «Загружено» представляется излишне сложной. Почему бы не создать вспомогательный метод и связать его напрямую?

protected Color GetColorForLabel(string text) 
{ 
    int theTWAValue; 
    if (text != null && int.TryParse(text, out theTWAValue) && theTWAValue >= 0) 
    { 
     return (theTWAValue < 90) ? System.Drawing.Color.Yellow : System.Drawing.Color.Red; 
    } 
    return System.Drawing.Color.Green; 
} 

Затем используйте его, чтобы связать передний план свойства:

<asp:Label id="TWALabel" runat="server" 
    Text = '<%# Eval("TWA") %>' 
    Foreground = '<%# GetColorForLabel(Eval("TWA") as string) %>' /> 
+0

Ну, теперь он работает, но не меняет цвета. Это потому, что у меня есть пользователь, который выбирает параметры listview перед его выходом? И под этим я имею в виду, что я выбрал название завода, затем отдел, затем классификацию работы, затем он отображает список. – friendo9876

+0

@ friendo9876 Да, похоже, что по какой-то причине значение не возвращается на сервер. На самом деле недостаточно информации, чтобы сказать наверняка. – McGarnagle

+0

Какую дополнительную информацию вы требуете, что я могу добавить в эту страницу, чтобы уточнить ответ? – friendo9876

1

Вы можете добавить Trim function

theTWAValue=Convert.ToInt32(theTWALabel.Text.Trim()); 

MSDN ссылка: http://msdn.microsoft.com/fr-fr/library/vstudio/t97s7bs3.aspx

Я предлагаю вам ту использовать Int32.TryParse function

ссылка: http://msdn.microsoft.com/fr-fr/library/vstudio/f02979c7.aspx

+0

Что именно делает функция Trim? – friendo9876

+0

Подавить пустым, потому что «33» не «33» (с пробелом) –

+1

отделка удалит белые пробелы в начале и конце строки, но я не думаю, что это ваша проблема – Rab

1

попробовать это

theTWAValue = Convert.ToInt32(theTWALabel.Text.ToString().Trim()); 
+0

Trime без e sora –

+0

только что отредактирован, извините, я набирал слишком быстро: P – sora0419

+0

good sora i добавил точку –

3

если ваше значение theTWALabel.Text пусто, то вы получите эту ошибку. Перед попыткой конвертировать убедитесь, что внутри есть значение.

+0

, просмотр списка не будет отображаться до тех пор, пока пользователь не выберет элементы в каждом раскрывающемся списке, поэтому это моя проблема? – friendo9876

+0

Я думаю, у вас был ответ ур из обсуждения с МакГарнгла, я прав? –

+0

Теперь он работает – friendo9876

1

Используйте int.TryParse вместо этого.

int value; 
if(!int.TryParse(theTWALabel.Text, out value)) 
{ 
    //didn't parse right 
} 
Смежные вопросы