我的数据库和控件的一些字段的TYPE是不一样的  我再点增加的时候总是报一个"指定的转换无效。"异常  然后我在显示之前又从新定义了一个空的DATASET  与控件的类型一样  可是还报这个异常  奇怪的是我的修改没有问题
请教大家是怎么回事啊  谢谢大家了!

解决方案 »

  1.   

      我后边定义的那个dataSet的类型跟控件的一样  还是报这个错啊
      

  2.   

    已经转了  
    这是代码 
     int bt, et, adp;
                GridEditableItem editedItem = e.Item as GridEditableItem;
                //得到当前编辑行
                //int adid =Convert.ToInt32(editedItem.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["AdId"]);
                DataSet dataSet = new DataSet();
                SqlConnection thisConnection = new SqlConnection(@"Data Source =(local);UID=sa;PWD=19830919;" + "Initial Catalog=adinfo");
                thisConnection.Open();
                SqlDataAdapter adapter = new SqlDataAdapter();            adapter.SelectCommand = new SqlCommand("SELECT [AdId], [AdKeyId], [AdUrl], [AdPosition], [AdDescription], [AdText], [AdCode], [ExpireDate], [IsAvailable], [ExpireTime], [BeginTime], [PublishTime], [AdViewsMax], [ProviderId], [BeginDate], [AdViews], [AdHitsMax], [AdHash], [AdHits] FROM [AdInfo]", thisConnection);            adapter.Fill(dataSet, "AdInfo");            thisConnection.Close();
                DataTable dt = dataSet.Tables["AdInfo"];            foreach (DataRow dr in dt.Rows)
                {
                    bt = Convert.ToInt32(dr["BeginTime"]);
                    et = Convert.ToInt32(dr["ExpireTime"]);
                    adp = Convert.ToInt32(dr["AdPosition"]);
                    BeginTime = EditIntToTime(bt);
                    ExpireTime = EditIntToTime(et);
                    IntToBool(adp);            }
                dt.Columns.Remove("BeginTime");
                dt.Columns.Remove("ExpireTime");
                dt.Columns.Add(new DataColumn("BeginTime", typeof(DateTime)));
                dt.Columns.Add(new DataColumn("ExpireTime", typeof(DateTime)));
                dt.Columns.Add(new DataColumn("Head", typeof(bool)));
                dt.Columns.Add(new DataColumn("Center", typeof(bool)));
                dt.Columns.Add(new DataColumn("Foot", typeof(bool)));
                foreach (DataRow dr in dt.Rows)
                {
                    dr["BeginTime"] = BeginTime;
                    dr["ExpireTime"] = ExpireTime;
                    dr["Head"] = head;
                    dr["Center"] = center;
                    dr["Foot"] = foot;
                }
                this.ADInfo.DataSource = dataSet.Tables["AdInfo"].DefaultView;
    奇怪的是  其他操作都没问题  就增加数据时报错   
      

  3.   

    具体是哪里出错了?我发现
     foreach (DataRow dr in dt.Rows) 
                { 
                    dr["BeginTime"] = BeginTime; 
                    dr["ExpireTime"] = ExpireTime; 
                    dr["Head"] = head; 
                    dr["Center"] = center; 
                    dr["Foot"] = foot; 
                } 
    这里应该是不行的,foreach只读的,你在这里对datarow里的字段赋值,应该是会出错的.你改成for吧! for(int i=0;i<dt.Rows.Count;i++)
                { 
                    dt.Rows[i]["BeginTime"] = BeginTime;  //还有,要注意你时间赋值时,格式是否一样.跟追以下看看.
                    dt.Rows[i]["ExpireTime"] = ExpireTime; 
                    dt.Rows[i]["Head"] = head; 
                    dt.Rows[i]["Center"] = center; 
                    dt.Rows[i]["Foot"] = foot; 
                }