maxtor2008 maxtor2008
http://hi.baidu.com/maxtor2008/album
关注数: 12 粉丝数: 22 发帖数: 1,644 关注贴吧数: 30
给datagridvie列标题赋值时出现超出索引的报错. 遇到一个非常奇怪的报错,查了一天没有结果,换了几个方式,还是有相同的报错. 检查后发现代码报错的位置column.Name ,只是在FLosQty和FPorportion字段时才会有报错,出现报错点确定后,程序又能正常执行. public void NewDataViewCellsName(string username, int tableid)//自动识别字段别名 { //SetDataGridView.RowStateChanged -= dgv_RowStateChanged; string name_str = null; try { //取字段数据表的资料 SetSqlText = "select FColumnName,FColumnText,FColumnWidth,FType,FBit,FLook,FUserLook from t_jc_ColumnsVisible where FUserName like '" + username + "' and FFormID=" + tableid; datacommd = new SqlCommand(SetSqlText, SetGetSqlConnection); sda = new SqlDataAdapter(datacommd); ds = new DataSet(); sda.Fill(ds); if (ds.Tables[0].Rows.Count == 0) { return; } //遍历DATAGRIDVIEW并设置别名与宽度 //Console.WriteLine("{0}={1}", ds.Tables[0].Rows.Count.ToString(), SetDataGridView.Columns.Count.ToString()); foreach (DataGridViewColumn column in SetDataGridView.Columns) { #region 以下代码在天瑞物料使用记录表时,出现莫名的报错:索引超出范围 //从DATASET表中取出匹配的记录 //Console.WriteLine("Tabler字段名{0},DataGridView字段名{1}", Convert.ToInt32(dr["FLook"]).ToString(), column.Name.ToString()); //name_str = column.Name.ToString(); //DataRow dr = ds.Tables[0].Select().SingleOrDefault(s => s["FColumnName"].ToString().Trim() == column.Name.ToString().Trim()); ////Console.WriteLine("Tabler字段名{0},DataGridView字段名{1}", Convert.ToInt32(dr["FLook"]).ToString(), column.Name.ToString()); ////name_str = dr["FColumnText"].ToString(); ////首列不能为空 //column.HeaderText = dr["FColumnText"].ToString(); //column.Width = Convert.ToInt32(dr["FColumnWidth"]); //if (Convert.ToInt32(dr["FLook"]) == 0) //{ // column.Visible = false; //} //else if (Convert.ToInt32(dr["FUserLook"]) == 0) //{ // column.Visible = false; //} //else if (Convert.ToInt32(dr["FColumnWidth"]) == 0) //{ // column.Visible = false; //} //else //{ // column.Visible = true; // //格式化数字格式 // DataGridViewCellStyle cs = new DataGridViewCellStyle(); // cs.Format = "N" + dr["FBit"].ToString(); // if (column.ValueType == typeof(System.Decimal)) // { // column.DefaultCellStyle = cs; // } //} #endregion #region 2017-11-13因为上面的报错,改成linq语句查询数据 var query = from q in ds.Tables[0].AsEnumerable() where q.Field<string>("FColumnName") == column.Name select q; if (query.Count() > 0) { foreach (var item in query) { name_str = column.Name; //Console.WriteLine(column.Index); column.HeaderText = item.Field<string>("FColumnText").ToString(); column.Width = Convert.ToInt32(item.Field<decimal>("FColumnWidth")); if (Convert.ToInt32(item.Field<bool>("FLook")) == 0) { column.Visible = false; } else if (Convert.ToInt32(item.Field<bool>("FUserLook")) == 0) { column.Visible = false; } else if (Convert.ToDecimal(item.Field<decimal>("FColumnWidth")) == 0M) { column.Visible = false; } else { column.Visible = true; } DataGridViewCellStyle cs = new DataGridViewCellStyle(); cs.Format = "N" + item.Field<int>("FBit"); if (column.ValueType == typeof(System.Decimal)) { column.DefaultCellStyle = cs; } } } #endregion } } catch (Exception es) { MessageBox.Show(name_str + "\r" + es.Message, "设置表格时出错", MessageBoxButtons.OK, MessageBoxIcon.Warning); } finally { ////CellFormat("N0"); //SetDataGridView.RowStateChanged += dgv_RowStateChanged; ////指定首列宽度 //SetDataGridView.RowHeadersWidth = 60; } }
阿拉法特毒杀迷局的三大“为什么” 围绕着阿拉法特的死,自始自终迷雾层层。他死得离奇,以至于身后各种传闻尘嚣直上,毒杀、乃至艾滋的说法都一度大行其道。怎么个奇怪法呢?尽管七十多岁的阿拉法特本身健康状况不好,可是去得也太突然了。据记载,他于2004年10月27日开会时骤然呕吐,并晕倒10分钟。最开始来自埃及的医疗小组怀疑他得了流感。后来他被送到法国治疗,两个星期后离世。尽管做了大量的医学检测,可发病原因却不清楚——没有感染症状,没有血管疾病,也和肿瘤无关。医生当然也想到了是不是中毒,可是毒理测试却显示不出个所以然。 一直到2006年,轰动一时的俄罗斯特工利特维年科被毒案后,人们才想到有着同样剧烈呕吐和腹泻等症状的阿拉法特会不会也是死于放射性物质钋-210。 利特维年科从俄罗斯叛逃,到了英国定居,他在一家寿司店进餐时被人下毒。一个是前克格勃特工,一个是叱咤一时的政治人物,就这样被联系了起来,两年后的中毒案竟然“启发”了两年前的死亡谜团。由于利特维年科特殊的身份,他被暗杀后,调查者更容易联想到非常规的投毒手段。事实上,在他之前几乎就没有公开的钋-210投毒案例。瑞士的法医专家们之所以愿意开启调查也跟有了这起先例有关。当然,也有人暗示毒杀二者的是同一股力量,就有俄罗斯议员称利特维年科曾多次到过以色列,试图与尤科斯石油公司前主要股东之一涅夫兹林举行会面。不过该议员名叫卢戈沃伊,正是几年前被英国检察部门指控为投毒谋害利特维年科的嫌疑人。有推脱嫌疑的可能,所以其言论真实度存疑
1 下一页