2013-07-24 23 views
0

我有这样的代码:指定的转换无效时获取的DataColumn值

private void FillMenu() 
{ 
    int i; 

    string sql = "Select * from tblMenu where MenuGrup=1 order by SiraNo"; 

    DataTable dt = ExecSqlDT(sql); 

    if (dt.Rows.Count == 0) 

     return; 

    for (i = 0; i <= dt.Rows.Count - 1; i++) 
    { 

     DevExpress.Web.ASPxNavBar.NavBarGroup xGrp = new DevExpress.Web.ASPxNavBar.NavBarGroup(); 
     xGrp.Text = dt.Rows[i]["MenuAd"].ToString(); 
     if (!dt.Rows[i]["HeaderResimUrl"].ToString().Equals("")) 
      xGrp.HeaderImage.Url = dt.Rows[i]["HeaderResimUrl"].ToString(); 
     if (!dt.Rows[i]["ItemResimUrl"].ToString().Equals("")) 
      xGrp.ItemImage.Url = dt.Rows[i]["ItemResimUrl"].ToString(); 
     if (!dt.Rows[i]["Genisletilmis"].ToString().Equals("1")) 
     { 
      xGrp.Expanded = false; 
     } 
     else 
     { 
      xGrp.Expanded = true; 
     } 
     ASPxNavBar1.Groups.Add(xGrp); 
     FillMenuGroup(xGrp, (long)dt.Rows[i]["MenuID"]); 

    } 
} 

当我跑我的项目,它打破了在这一点上:

FillMenuGroup(xGrp, (long)dt.Rows[i]["MenuID"]); 

“指定投无效“

我该怎么办?

+0

尝试使用'TryParse'而不是隐式转换,程序防守。 – LukeHennerley

回答

0

你可以试试这个,看看它的工作原理:

FillMenuGroup(xGrp, Convert.ToInt64(dt.Rows[i]["MenuID"])); 
+0

谢谢,它工作! –