首页 新闻 搜索 专区 学院

ArrayList添加问题!!!解决一下..麻烦各位了

0
悬赏园豆:15 [已解决问题] 解决于 2012-12-10 11:31

            WSCurve wsc = new WSCurve();        
            #region 取到数据,要修改

            for (int i = 0; i < gvAdd.Rows.Count; i++)
            {
                wsc.CurveWid = Convert.ToString(this.gvAdd.Rows[i].Cells[0].Value);
                wsc.CurveName = Convert.ToString(this.gvAdd.Rows[i].Cells[1].Value);
                wsc.CurveAlia = Convert.ToString(this.gvAdd.Rows[i].Cells[2].Value);
                string[] srrSQL = { "select * from " + bDBName + ".dbo.wits_64 where CurveName='" + wsc.CurveName + "'" }; //bDBName=WIS00001
                string[] srrTableName = { "wits_64" };
                DataSet ds = Library.WebServicesLayer.GetELISPar(srrSQL, srrTableName);
                //string sql = "select * from WIS00001.dbo.wits_64 where CurveName='P6LA'";
                if (ds == null)
                    return;
                DataTable dt = ds.Tables[0];
                foreach (DataRow dr in dt.Rows)
                {
                    //wsc = new WSCurve();
                    wsc.CurveWid = dr["wid"].ToString();
                    wsc.CurveName = dr["CurveName"].ToString();
                    wsc.CurveAlia = dr["CurveName"].ToString();
                    wsc.CurveNumber = dr["sno"].ToString() == "" ? "0" : dr["sno"].ToString();  //对应数据库中sno字段
                    wsc.CurveHis = dr["his"].ToString() == "" ? "0" : dr["his"].ToString();     //对应数据库中his字段
                    wsc.CurveWid = dr["wid"].ToString();                                        //对应数据库中wid字段
                    wsc.wCurveTableName = dr["TableName"].ToString();                           //对应数据库中TableName字段
                    wsc.wCurvePlace = dr["place"].ToString();                                   //对应数据库中place字段
                    wsc.wCurveCnName = dr["CurveName"].ToString();                              //对应数据库中CurveName字段
                    wsc.wCurveFLName = dr["CurveName"].ToString();                              //对应数据库中CurveName字段
                    wsc.wTableName = wsc.CurveHis == "0" ? (dr["tableName"].ToString() == "62" ? "wits_62" : "wits_63") : (dr["tableName"].ToString() == "62" ? "wits_62_his" : "wits_63_his");     //对应数据库中的字段
                    wsc.wFieldname = "[" + Library.Util.GetColumnsNameFromPlace(dr["place"].ToString()) + "]";  //以对应的位置,拼出字段名字.
                    wsc.wUnitText = dr["Unit"].ToString();                                       //对应数据库中Unit字段
                    wsc.wRenderStyle = EnumRenderStyle.solid;                                    //是曲线的线型
                    wsc.wShow = true;                                                            //是否显示
                    wsc.wPoints = dr["Points"].ToString();                                       //总点数
                    wsc.swing = "40";                                                            //声波振幅
                    wsc.interval = "2";                                                          //采样间隔值
                    wsc.wDelay = "24";                                                           //采样间隔时间
                    wsc.intervalValue = "240";                                                   //第一个点的采样延迟时间
                    wsc.STCurveName = "";
                    wsc.SICurveName = "";
                    wsc.iWCurveIndex = 1;
                    wsc.iShowRectB = int.Parse(dr["Points"].ToString()) * int.Parse(wsc.wDelay);
                    wsc.iShowRectS = 240;
                    wsc.iWaveImageNum = int.Parse(dr["Victoria"].ToString());                     //对应数据库中的字段波形的条数
                }
                  wcb.ArCurve.Add(wsc);
            }

为什么我最后add后...比如我gvAdd.Rows.Count中2行不同的数据,但是当我添加到arrayList  ArCurve = new arrayList ();后.2条数据都是后者的数据,(就是说前者被后者给覆盖了)...怎么样才能解决呢?

问题补充:

一個亼冷暖自知的主页 一個亼冷暖自知 | 初学一级 | 园豆:65
提问于:2012-12-10 09:53
< >
分享
最佳答案
0

亲,你的问题是逻辑的问题,你应该放在for里new的,给你看看……你是这么写的

要改成注释里的那样……

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ComTest
{
    class Program
    {
        static void Main(string[] args)
        {
           
            ArrayList ar = new ArrayList();
            //A a;
            //for (int i = 0; i < 5; i++)
            //{
            //    a = new A { Name = i.ToString() };
            //    ar.Add(a);
            //}
            //foreach (A item in ar)
            //{
            //    Console.WriteLine(item.Name);
            //}
            A a=new A ();
            for (int i = 0; i < 5; i++)
            {
                a.Name = i.ToString();
                ar.Add(a);
            }
            foreach (A item in ar)
            {
                Console.WriteLine(item.Name);
            }
            Console.Read();
        }

    
    }
    class A
    {
        public string Name { get; set; }
    }

}
收获园豆:15
hexllo | 菜鸟二级 |园豆:405 | 2012-12-10 10:18

谢谢..我去查看一下..我是把所有取到的数据都存在了类中的曲线属性中了,每次取出来,都会覆盖,因为类中的属性变了,所以也就变了,,,没思路怎么改..

一個亼冷暖自知 | 园豆:65 (初学一级) | 2012-12-10 10:24

谢谢搞定了.能留个qq吗?我对数组不是很熟练,麻烦您了

一個亼冷暖自知 | 园豆:65 (初学一级) | 2012-12-10 10:33

????还在吗?我存到arraylist中数据,我想以string[] str =new string[]{""};

取到里面的数组,报错-----源数组中至少有一个元素无法被向下转换到目标数组类型。

这个?是什么问题呢?

一個亼冷暖自知 | 园豆:65 (初学一级) | 2012-12-10 11:22
其他回答(1)
0

wsc 没有new ,都是指向同一个对象,这样,你的效果就是都是最后的数据

chenping2008 | 园豆:9836 (大侠五级) | 2012-12-10 10:28

             wcb.ArCurve.Clear();

            WSCurve wsc;       

            #region 取到数据,要修改

            for (int i = 0; i < gvAdd.Rows.Count; i++)
            {
                wsc= new WSCurve();

 

是这样吗?写到for中,但是还是...被覆盖

支持(0) 反对(0) 一個亼冷暖自知 | 园豆:65 (初学一级) | 2012-12-10 10:30

谢谢搞定了.能留个qq吗?我对数组不是很熟练,麻烦您了

支持(0) 反对(0) 一個亼冷暖自知 | 园豆:65 (初学一级) | 2012-12-10 10:33

@一個亼冷暖自知: 只要明白了引用类型,就ok了

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-12-10 10:33

@chenping2008: 恩恩,qq方便说吗?我存了还要取的.....

支持(0) 反对(0) 一個亼冷暖自知 | 园豆:65 (初学一级) | 2012-12-10 10:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册