网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月21日漏签0天
c#吧 关注:188,496贴子:823,111
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1回复贴,共1页
<<返回c#吧
>0< 加载中...

给datagridvie列标题赋值时出现超出索引的报错.

  • 只看楼主
  • 收藏

  • 回复
  • maxtor2008
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
遇到一个非常奇怪的报错,查了一天没有结果,换了几个方式,还是有相同的报错.
检查后发现代码报错的位置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;
}
}



  • maxtor2008
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
真正的问题找到了,原因是datagridvie有一个单元格值更新的事件影响所导致的.
结贴走人.


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回c#吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示