2013-07-24 26 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

謝謝,它工作! –