2016-07-30 4 views
0

안녕하십니까. 조건이 충족되면 gridview에서 datatable에 항목을 추가하려고합니다.데이터 테이블에 여러 레코드가 있습니다.

조건은 내가 하나 개의 항목 만 복용 상태의 데이터 테이블을 충족 한 개 이상의 항목이있는 경우 문제가 ReceivedQuantity < OrderedQuantity

입니다.

당신은 각 행이 일을하고

List<string> PurchaseReturnsItems = new List<string>(); 
foreach (GridViewRow row in griddelpur.Rows) 
{ 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     CheckBox chkRow = (row.Cells[0].FindControl("chkSel") as CheckBox); 
     if (chkRow.Checked) 
     { 
      string PurchaseOrderDetailID = row.Cells[1].Text; 
      string itemcode = row.Cells[2].Text; 
      string itemname = row.Cells[3].Text; 
      string UOM = row.Cells[4].Text; 
      string OrderedQuantity = row.Cells[5].Text; 
      string ReceivedQuantity = (row.Cells[6].FindControl("txtReceivedQty") as TextBox).Text; 
      string Comments = (row.Cells[7].FindControl("txtComments") as TextBox).Text; 
      string ItemID = row.Cells[8].Text; 

      if (Convert.ToInt32(ReceivedQuantity) < Convert.ToInt32(OrderedQuantity)) 
      { 
       PurchaseReturnsItems.Add(ItemID); 
       DataTable tbl = new DataTable(); 
       tbl.Clear(); 
       tbl.Columns.Add("ItemID"); 
       tbl.Columns.Add("ItemCode"); 
       tbl.Columns.Add("UOM"); 
       tbl.Columns.Add("ItemName"); 
       tbl.Columns.Add("ReturnedQuantity"); 

       DataRow dr = tbl.NewRow(); 
       dr["ItemID"] = ItemID; 
       dr["ItemCode"] = itemcode; 
       dr["UOM"] = UOM; 
       dr["ItemName"] = itemname; 
       dr["ReturnedQuantity"] = Convert.ToInt32(OrderedQuantity) - Convert.ToInt32(ReceivedQuantity); 

       tbl.Rows.Add(dr); 
       gridpurahsereturn.DataSource = tbl; 
       gridpurahsereturn.DataBind(); 
      } 
     } 
    } 


} 

답변

1

코드 : 당신이 반복 수행 한 후에 그래서

gridpurahsereturn.DataSource = tbl; 
gridpurahsereturn.DataBind(); 

는, 최종 결과는 것입니다 마지막 하나가 무엇이든 관계가있다.

대신, 루프의 레코드 컬렉션을 구축하고 루프 후,하면 해당 모음 를 컨트롤을 바인딩합니다. 다음과 같은 것 :

// create the data source 
DataTable tbl = new DataTable(); 
tbl.Columns.Add("ItemID"); 
tbl.Columns.Add("ItemCode"); 
tbl.Columns.Add("UOM"); 
tbl.Columns.Add("ItemName"); 
tbl.Columns.Add("ReturnedQuantity"); 

// populate the data source 
foreach (GridViewRow row in griddelpur.Rows) 
{ 
    // all your other logic, then... 

    DataRow dr = tbl.NewRow(); 
    dr["ItemID"] = ItemID; 
    dr["ItemCode"] = itemcode; 
    dr["UOM"] = UOM; 
    dr["ItemName"] = itemname; 
    dr["ReturnedQuantity"] = Convert.ToInt32(OrderedQuantity) - Convert.ToInt32(ReceivedQuantity); 

    tbl.Rows.Add(dr); 
} 

// use the data source 
gridpurahsereturn.DataSource = tbl; 
gridpurahsereturn.DataBind(); 
관련 문제