输入字符串格式不正确?
当我运行我的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>
你有实际检查输入是有效的 - 我会用TryParse
,而不是转换功能:
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) %>' />
它现在运行,但不会改变颜色。是否因为我有用户在输出之前选择listview的参数?我的意思是,我让他们选择工厂名称,然后选择部门,然后选择工作分类,然后显示列表视图。 – friendo9876
@ friendo9876是的,似乎意味着价值没有得到回到服务器出于某种原因。没有足够的信息可以肯定地说。 – McGarnagle
你需要什么额外的信息,我可以添加到此页面以使答案更精确? – friendo9876
您可以添加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
试试这个
theTWAValue = Convert.ToInt32(theTWALabel.Text.ToString().Trim());
如果您theTWALabel.Text
值是空的,那么你会得到这个错误。在尝试转换之前检查里面是否有值。
列表视图不会显示,直到用户选择每个下拉列表中的项目,所以这是我的问题吗? – friendo9876
我想你是通过与McGarnagle讨论来回答的,对吗? –
雅现在工作 – friendo9876
使用int.TryParse代替。
int value;
if(!int.TryParse(theTWALabel.Text, out value))
{
//didn't parse right
}
当失败时'theTWALabel.Text'的值是多少?另外,你应该考虑'Int32.TryParse',因为你正在从一个文本框中读取(这是不受限制的)? – Brad