none
谁能帮我看看,这个数组赋值的问题 RRS feed

  • 问题

  • 因为需要,所以要写一个用FOR语句赋值的数组,当引用这个数组的时候却提示这样的问题
    输入字符串的格式不正确。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.FormatException: 输入字符串的格式不正确。

    源错误: 
     
    for (int i = 1; i <= shu; i++)
                    {
                        guzhang[i] =  i + "#泵故障" ;
                        Label1.Text = guzhang[i]; //这是为了测试数组好不好使,这显示时正常的
                    }
    for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                    {
                        DataRowView mydrv = myds5.Tables[" + tableName1 + "].DefaultView[i];
                        for (int p = 1; p <= shu; p++)
                        {
                            string score = Convert.ToString(mydrv[guzhang[P]]); //经过测试,我知道错误指的是这里的数组不对,这是为什么呢
                           //string score = Convert.ToString(mydrv[guzhang[2]]);//当我用 这样赋值的时候就可以运行
                            if (int.Parse(score) < 5)
                            {
                                GridView1.Rows[i].Cells[p].Attributes.Add("style", "color:red");   //设置字体颜色
                            }
                        }
                    }

    2009年4月21日 8:42

答案

  •  int i;

                    if (int.TryParse(score.Replace("&nbsp;", ""), out i))
                    {
                        if (i < 8)
                        {
                            GridView1.Rows[i].Cells[2].Attributes.Add("style", "color:red");   //设置字体颜色
                        }
                    }

    打错了,不好意思


    知识改变命运,奋斗成就人生!
    • 已标记为答案 猫色色 2009年4月23日 3:09
    2009年4月22日 4:05
    版主

全部回复

  • 因为需要,所以要写一个用FOR语句赋值的数组,当引用这个数组的时候却提示这样的问题
    输入字符串的格式不正确。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.FormatException: 输入字符串的格式不正确。

    源错误: 
     
    for (int i = 1; i <= shu; i++)
                    {
                        guzhang[i] =  i + "#泵故障" ;
                        Label1.Text = guzhang[i]; //这是为了测试数组好不好使,这显示时正常的
                    }
    for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                    {
                        DataRowView mydrv = myds5.Tables[" + tableName1 + "].DefaultView[i];
                        for (int p = 1; p <= shu; p++)
                        {
                            string score = Convert.ToString(mydrv[guzhang[P]]); //经过测试,我知道错误指的是这里的数组不对,这是为什么呢
                           //string score = Convert.ToString(mydrv[guzhang[2]]);//当我用 这样赋值的时候就可以运行
                            if (int.Parse(score) < 5)
                            {
                                GridView1.Rows[i].Cells[p].Attributes.Add("style", "color:red");   //设置字体颜色
                            }
                        }
                    }

    问题应该出在我加下划线的位置,是否能保证,每次得到的score都能转换成int类型?

    Wright
    2009年4月21日 8:54
  • guzhang[P] p应该是小写吧

    孟宪会
    2009年4月21日 8:56
    版主
  • 比方数数据源只有5个段,那么最大的 Index 应该是 4 这里你输个 5 自然就出错了

    shu 是什么,是数据源字段的字数吗 如果是把  for (int p = 1; p <= shu; p++) 改为  for (int p = 1; p < shu; p++)
    P 是大写的,是 for 定义的那个 小写 p 吗, 是自己打错了吗,还是在外面定义了一个常量?

    if (int.Parse(score) < 5)
                            {
                                GridView1.Rows[i].Cells[p].Attributes.Add("style", "color:red");   //设置字体颜色
                            }

    可以改一下, 这样在数据量大的时候性能会提高很多

                        int k;
                        if (int.TryParse(score, out k))
                        {
                            if (k < 5)
                            {
                                GridView1.Rows[i].Cells[p].Attributes.Add("style", "color:red");   //设置字体颜色
                            }
                        }


    知识改变命运,奋斗成就人生!
    2009年4月21日 9:00
    版主
  • 用XXY老师的语句好使,可是为什么呢!
    我用我的语句就不行呢?
    shu是我用来记录泵的数量的,也就是列数
    我p的定义是在FOR里定义的 for (int p = 1; p <= 2; p++)
    2009年4月21日 9:19
  • 问题解决了吗?

    如果解决了, 是因为索引是从 0 开始的不是从 1 开始的如果你的列数是 2 那么最大的索引是 1 , 

    如果你这样写 mydrv[2] 那当然就出错了 也就是说mydrv的有效索引只有 0 和 1
    知识改变命运,奋斗成就人生!
    2009年4月21日 9:25
    版主
  • 问题解决了!

    2009年4月21日 10:31
  • string score = Convert.ToString(mydrv["门磁"]); //经过测试,我知道错误指的是这里的数组不对,这是为什么呢
     if (int.Parse(score) < 5) 
    {
      GridView1.Rows[i].Cells[6].Attributes.Add("style", "color:red");   //设置字体颜色
    }
    但为什么我用这样赋值的时候,也提示我出上面的粗无呢!
    2009年4月21日 10:35
  • 有 "门磁" 这个字段吗?

    知识改变命运,奋斗成就人生!
    2009年4月21日 10:36
    版主
  • 有这个字段
    string score = Convert.ToString(mydrv["门磁"]); 
    我这个现在就只能用1#泵故障
    写成string score = Convert.ToString(mydrv["2#泵故障"]); 
    就不好使!

    2009年4月22日 2:08
  • 报什么错?


    知识改变命运,奋斗成就人生!
    2009年4月22日 2:10
    版主
  • 这个是我的gridview
    <asp:GridView ID="GridView1" runat="server" Width="550px"
                          AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"
                          CellPadding="4" ForeColor="#333333" GridLines="None">
                          <Columns>
                              <asp:BoundField DataField="日期" HeaderText="日期" />
                              <asp:BoundField DataField="1#泵故障" HeaderText="1#泵故障" />
                              <asp:BoundField DataField="2#泵故障" HeaderText="2#泵故障" />
                              <asp:BoundField DataField="3#泵故障" HeaderText="3#泵故障" />
                              <asp:BoundField DataField="4#泵故障" HeaderText="4#泵故障" />
                              <asp:BoundField DataField="5#泵故障" HeaderText="5#泵故障" />
                              <asp:BoundField DataField="6#泵故障" HeaderText="6#泵故障" />
                              <asp:BoundField DataField="7#泵故障" HeaderText="7#泵故障" />
                              <asp:BoundField DataField="8#泵故障" HeaderText="8#泵故障" />
                              <asp:BoundField DataField="9#泵故障" HeaderText="9#泵故障" />
                              <asp:BoundField DataField="10#泵故障" HeaderText="10#泵故障" />
                              <asp:BoundField DataField="11#泵故障" HeaderText="11#泵故障" />
                              <asp:BoundField DataField="12#泵故障" HeaderText="12#泵故障" />
                              <asp:BoundField DataField="13#泵故障" HeaderText="13#泵故障" />
                              <asp:BoundField DataField="14#泵故障" HeaderText="14#泵故障" />
                              <asp:BoundField DataField="15#泵故障" HeaderText="15#泵故障" />
                              <asp:BoundField DataField="16#泵故障" HeaderText="16#泵故障" />
                              <asp:BoundField DataField="17#泵故障" HeaderText="17#泵故障" />
                              <asp:BoundField DataField="18#泵故障" HeaderText="18#泵故障" />
                              <asp:BoundField DataField="19#泵故障" HeaderText="19#泵故障" />
                              <asp:BoundField DataField="20#泵故障" HeaderText="20#泵故障" />
                              <asp:BoundField DataField="21#泵故障" HeaderText="21#泵故障" />
                              <asp:BoundField DataField="22#泵故障" HeaderText="22#泵故障" />
                              <asp:BoundField DataField="23#泵故障" HeaderText="23#泵故障" />
                              <asp:BoundField DataField="24#泵故障" HeaderText="24#泵故障" />
                              <asp:BoundField DataField="25#泵故障" HeaderText="25#泵故障" />
                              <asp:BoundField DataField="26#泵故障" HeaderText="26#泵故障" />
                              <asp:BoundField DataField="27#泵故障" HeaderText="27#泵故障" />
                              <asp:BoundField DataField="28#泵故障" HeaderText="28#泵故障" />
                              <asp:BoundField DataField="29#泵故障" HeaderText="29#泵故障" />
                              <asp:BoundField DataField="30#泵故障" HeaderText="30#泵故障" />
                              <asp:BoundField DataField="31#泵故障" HeaderText="31#泵故障" />
                              <asp:BoundField DataField="32#泵故障" HeaderText="32#泵故障" />
                              <asp:BoundField DataField="变频故障" HeaderText="变频故障" />
                              <asp:BoundField DataField="门磁" HeaderText="门磁" />
     </Columns>
    这个是CS里的代码
                    for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                    {
                        DataRowView mydrv = myds5.Tables["baojing"].DefaultView[i];
                        string score = Convert.ToString(mydrv["[2#泵故障]"]);  //我在这把它换成1#泵故障就好使,但是换成2#泵故障或者门磁就不好使
                        if (int.Parse(score) < 8)
                                {
                                    //GridView1.Rows[i].Cells[1].BackColor = System.Drawing.Color.Red;      //设置背景颜色
                                    GridView1.Rows[i].Cells[2].Attributes.Add("style", "color:red");   //设置字体颜色
                                }                    
                    }

    它提示这个错误

    输入字符串的格式不正确。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.FormatException: 输入字符串的格式不正确。

    2009年4月22日 3:11
  • 你在这句打个断点跟踪一下,应该是个简单问题 string score = Convert.ToString(mydrv["[2#泵故障]"]);  
    知识改变命运,奋斗成就人生!
    2009年4月22日 3:35
    版主
  • 我想做一个报警,当一个列的值超出一定范围的时候就让字改变颜色,可是我遇到了下列问题

    他提示这个错误

    输入字符串的格式不正确。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.FormatException: 输入字符串的格式不正确。


    这个是我的gridview
    <asp:GridView ID="GridView1" runat="server" Width="550px"
                          AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"
                          CellPadding="4" ForeColor="#333333" GridLines="None">
                          <Columns>
                              <asp:BoundField DataField="日期" HeaderText="日期" />
                              <asp:BoundField DataField="1#泵故障" HeaderText="1#泵故障" />
                              <asp:BoundField DataField="2#泵故障" HeaderText="2#泵故障" />
                              <asp:BoundField DataField="3#泵故障" HeaderText="3#泵故障" />
                              <asp:BoundField DataField="4#泵故障" HeaderText="4#泵故障" />
                              <asp:BoundField DataField="5#泵故障" HeaderText="5#泵故障" />
                              <asp:BoundField DataField="6#泵故障" HeaderText="6#泵故障" />
                              <asp:BoundField DataField="7#泵故障" HeaderText="7#泵故障" />
                              <asp:BoundField DataField="8#泵故障" HeaderText="8#泵故障" />
                              <asp:BoundField DataField="9#泵故障" HeaderText="9#泵故障" />
                              <asp:BoundField DataField="10#泵故障" HeaderText="10#泵故障" />
                              <asp:BoundField DataField="11#泵故障" HeaderText="11#泵故障" />
                              <asp:BoundField DataField="12#泵故障" HeaderText="12#泵故障" />
                              <asp:BoundField DataField="13#泵故障" HeaderText="13#泵故障" />
                              <asp:BoundField DataField="14#泵故障" HeaderText="14#泵故障" />
                              <asp:BoundField DataField="15#泵故障" HeaderText="15#泵故障" />
                              <asp:BoundField DataField="16#泵故障" HeaderText="16#泵故障" />
                              <asp:BoundField DataField="17#泵故障" HeaderText="17#泵故障" />
                              <asp:BoundField DataField="18#泵故障" HeaderText="18#泵故障" />
                              <asp:BoundField DataField="19#泵故障" HeaderText="19#泵故障" />
                              <asp:BoundField DataField="20#泵故障" HeaderText="20#泵故障" />
                              <asp:BoundField DataField="21#泵故障" HeaderText="21#泵故障" />
                              <asp:BoundField DataField="22#泵故障" HeaderText="22#泵故障" />
                              <asp:BoundField DataField="23#泵故障" HeaderText="23#泵故障" />
                              <asp:BoundField DataField="24#泵故障" HeaderText="24#泵故障" />
                              <asp:BoundField DataField="25#泵故障" HeaderText="25#泵故障" />
                              <asp:BoundField DataField="26#泵故障" HeaderText="26#泵故障" />
                              <asp:BoundField DataField="27#泵故障" HeaderText="27#泵故障" />
                              <asp:BoundField DataField="28#泵故障" HeaderText="28#泵故障" />
                              <asp:BoundField DataField="29#泵故障" HeaderText="29#泵故障" />
                              <asp:BoundField DataField="30#泵故障" HeaderText="30#泵故障" />
                              <asp:BoundField DataField="31#泵故障" HeaderText="31#泵故障" />
                              <asp:BoundField DataField="32#泵故障" HeaderText="32#泵故障" />
                              <asp:BoundField DataField="变频故障" HeaderText="变频故障" />
                              <asp:BoundField DataField="门磁" HeaderText="门磁" />
     </Columns>
    这个是CS里的代码
                    for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                    {
                        DataRowView mydrv = myds5.Tables["baojing"].DefaultView[i];
                        string score = Convert.ToString(mydrv["[2#泵故障]"]);                  //我在这把它换成1#泵故障然后再把Cells[1].就好使,但是换成2#泵故障或者门磁就不好使
                        if (int.Parse(score) < 8)
                                {
                                     GridView1.Rows[i].Cells[2].Attributes.Add("style", "color:red");   //设置字体颜色
                                }                    
                    }
    这是为什么呢?

    2009年4月22日 3:36
  • 排错提示
    确保方法的参数格式正确。
    将一个字符串转换为DateTime时,先分析该字符创以获取日期,然后在将每个变量放置到DateTime对象。


    他提示这个错误
    2009年4月22日 3:51
  • 可能是 int.Parse(score) 错了, score 不是有效的 int 格式, 试试

                    int i;

                    if (int.TryParse(score.Replace("&nbsp;"), out i))
                    {
                        if (i < 8)
                        {
                            GridView1.Rows[i].Cells[2].Attributes.Add("style", "color:red");   //设置字体颜色
                        }
                    }


    知识改变命运,奋斗成就人生!
    2009年4月22日 3:55
    版主
  • 我把你这段代码贴过去,
    提示我Replace方法没有采用“1”个参数重载
    2009年4月22日 4:00
  • 另外的一张帖子回复的方法你试过了吗?
    知识改变命运,奋斗成就人生!
    2009年4月22日 4:03
    版主
  •  int i;

                    if (int.TryParse(score.Replace("&nbsp;", ""), out i))
                    {
                        if (i < 8)
                        {
                            GridView1.Rows[i].Cells[2].Attributes.Add("style", "color:red");   //设置字体颜色
                        }
                    }

    打错了,不好意思


    知识改变命运,奋斗成就人生!
    • 已标记为答案 猫色色 2009年4月23日 3:09
    2009年4月22日 4:05
    版主
  • 谢谢XXY老师
    用你昨天给我的这个方法
    int k;
                        if (int.TryParse(score, out k))
                        {
                            if (k < 5)
                            {
                                GridView1.Rows[i].Cells[p].Attributes.Add("style", "color:red");   //设置字体颜色
                            }
                        }
    我弄通了!
    • 已标记为答案 猫色色 2009年4月22日 5:05
    • 取消答案标记 猫色色 2009年4月23日 3:09
    2009年4月22日 4:14
  • if (int.TryParse(score.Replace("&nbsp;", ""), out i))
    你能告诉我这句话是什么意思吗?
    2009年4月22日 4:15
  • Replace是替换字符串如 string s = "123abc".Replace("123", "") // s = abc
    int.TryParse 将数字的字符串表示形式转换为它的等效整数。并返回一个值表示是否转换成功, 它比 Parse 或 Convert.ToInt32效率更高一些,

    你本地装了 msdn 吗? 如果没装你装一个吧, 以后遇到问题可以先查一下 msdn , 如果你的问题已解决请标记已解答以便遇到相同问题的人能搜到这张贴子

    知识改变命运,奋斗成就人生!
    • 已标记为答案 猫色色 2009年4月22日 5:05
    • 取消答案标记 猫色色 2009年4月22日 5:05
    2009年4月22日 4:51
    版主
  • 结帖没结对,正确答案是打在答对的人的帖子上,修正一下
    知识改变命运,奋斗成就人生!
    2009年4月22日 5:07
    版主