2016-08-23 2 views
0

Вот DataTable:Как изменить DataTable идентификатор столбца INT (typeconversion)

DataTable dtemp = new DataTable(); 

dtemp = objDB.SelectEmployeeSalaryByYear11(Convert.ToInt32(ddlyear.SelectedValue)); 

Я пытаюсь это, но показывающий проблему ..

Int32 dtemps = int.Parse(dtemp.Rows[i]["ID"].ToString()); 

and 
Int32 dtemps = Convert.ToInt32(dtemp.Rows[i]["ID"].ToString()); 

так, как преобразовать datatatble Идентификатор столбца

здесь ОБЩИЙ КОД:

protected void btnSave_Click(object sender, EventArgs e) 
    { 
     string result = string.Empty; 
     string upld = string.Empty; 
     int i = 0; 
     try 
     { 
      foreach (GridViewRow gvr in grdSalary.Rows) 
      { 
       DataTable dtemp = new DataTable(); 
       dtemp = objDB.SelectEmployeeSalaryByYear11(Convert.ToInt32(ddlyear.SelectedValue)); 
       Int32 dtemps = Convert.ToInt32(dtemp.Rows[i]["ID"].ToString()); 
       Int32 empId = Convert.ToInt32(grdSalary.DataKeys[gvr.RowIndex]["EID"]); 
       DataTable dtempcount = new DataTable(); 
       dtempcount = objDB.SelectEmployeeSalaryByEmpIDYear11(Convert.ToInt32(ddlyear.SelectedValue), empId); 

       TextBox txtjan = gvr.FindControl("txtjan") as TextBox; 
       TextBox txtfeb = gvr.FindControl("txtfeb") as TextBox; 
       TextBox txtmarch = gvr.FindControl("txtmarch") as TextBox; 
       TextBox txtapril = gvr.FindControl("txtapril") as TextBox; 
       TextBox txtmay = gvr.FindControl("txtmay") as TextBox; 
       TextBox txtjune = gvr.FindControl("txtjune") as TextBox; 
       TextBox txtjuly = gvr.FindControl("txtjuly") as TextBox; 
       TextBox txtaug = gvr.FindControl("txtaug") as TextBox; 
       TextBox txtsept = gvr.FindControl("txtsept") as TextBox; 
       TextBox txtoct = gvr.FindControl("txtoct") as TextBox; 
       TextBox txtnov = gvr.FindControl("txtnov") as TextBox; 
       TextBox txtdec = gvr.FindControl("txtdec") as TextBox; 


       if (dtempcount.Rows.Count == 0) 
       { 

        Int32 Intuserid = objDB.insert_updateSalary(0, Convert.ToInt32(grdSalary.DataKeys[gvr.RowIndex]["EID"]), Convert.ToInt32(ddlyear.SelectedValue), 
         txtjan.Text, txtfeb.Text, txtmarch.Text, txtapril.Text, txtmay.Text, txtjune.Text, txtjuly.Text, txtaug.Text, 
         txtsept.Text, txtoct.Text, txtnov.Text, txtdec.Text); 


       } 
       else 
       { 
        try 
        { 
         // Int32 Intuserid = objDB.insert_updateSalary(Convert.ToInt32(dtemp.Rows[i]["ID"]), Convert.ToInt32(grdSalary.DataKeys[gvr.RowIndex]["EID"]), Convert.ToInt32(ddlyear.SelectedValue), 
         //txtjan.Text, txtfeb.Text, txtmarch.Text, txtapril.Text, txtmay.Text, txtjune.Text, txtjuly.Text, txtaug.Text, 
         //txtsept.Text, txtoct.Text, txtnov.Text, txtdec.Text); 
         Int32 Intuserid = objDB.insert_updateSalary(int.Parse(dtemp.Rows[i]["ID"].ToString()), Convert.ToInt32(grdSalary.DataKeys[gvr.RowIndex]["EID"]), Convert.ToInt32(ddlyear.SelectedValue), 
         txtjan.Text, txtfeb.Text, txtmarch.Text, txtapril.Text, txtmay.Text, txtjune.Text, txtjuly.Text, txtaug.Text, 
         txtsept.Text, txtoct.Text, txtnov.Text, txtdec.Text); 

        } 
        catch (Exception ex) 
        { 
         throw ex; 
        } 
       } 
       i++; 
      } 
     } 
     catch (Exception ex) 
     { 
      Response.Redirect("Error.aspx"); 
     } 
    } 

Я хочу, чтобы обновить или вставить данные в DATATABSE ..

проблема заключается в том, что в то время как Int32 dtemps получает ноль показывает входной строки не было в правильном формате. .

+0

Я думаю, что ваш идентификатор может быть нулевым или пустым Таким образом, прежде чем проверить это преобразовать в целое или установить значение по умолчанию – Pravin

ответ

0

Попытка клонировать ваш DataTable, а затем изменить тип столбца, как

DataTable mydt = dtemp.Clone(); 
mydt.Columns[0].DataType = typeof(Int32); 
foreach (DataRow row in dtemp.Rows) 
{ 
    mydt.ImportRow(row); 
} 
+0

сударь вы можете объяснить мне ?? –

0

Ваш DataTable, вероятно, пуст, поэтому он не работает.

Check Row i меньше ROWCOUNT, например:

if (dtempcount.Rows.Count > i) 
+0

Извините .. datatable имеет большую ценность, .. –

+0

Зачем? Пожалуйста, отредактируйте это. –

+0

Строка ввода не была в правильном формате. –

Смежные вопросы