簡體   English   中英

從數據表中篩選asp.net中列之一的數據

[英]Filter data from datatable for one of columns in asp.net

我有一個datatable ,其獲取一些記錄。 因此,有一個列名稱為UPDATED_STATUS 在該列中,將出現Pre HotoPost Hoto值。

所以我想要的是,這些值中的任何一個都應該是該列中的值,然后它只能向前移動,否則它將提示警報為

Pre Hoto或Post Hoto都可以成為他們的

以下是示例圖片供參考

IMG

以下是獲得的代碼datatableUPDATED_STATUS

if (strFlag == "")
                    {
                        dtStatus = GET_STATUS_FROM_SAPID_FOR_HOTO(dtExcelRows.Rows[i]["Current SAPID"].ToString());

                        if (dtStatus == null && dtStatus.Rows.Count < 0)
                        {
                            ClientScript.RegisterStartupScript(Page.GetType(), "erroralert", "alert('Status cannot be blank for SAP ID entered');", true);
                        }
                        else
                        {
                            dtExcelRows.Rows[i]["UPDATED_STATUS"] = dtStatus.Rows[0][1].ToString();
                            dtExcelRows.AcceptChanges();
                        }
                    }

您當前的檢查( if (dtStatus == null && dtStatus.Rows.Count < 0) )是錯誤的:

  1. 當dtStatus為null時,您將繼續檢查dtStatus.Rows,它會引發nullref異常(您剛剛發現它為null);
  2. Rows.Count永遠不會小於零。

嘗試if (dtStatus == null || dtStatus.Rows.Count == 0)檢查是否根本沒有狀態(為null )或沒有狀態行(count為零)。 || 當發現dtStatus為null時,將阻止檢查dtStatus.Rows。

&&表示雙方必須同時為true
|| 表示至少兩面都必須是真實的(兩個都還可以)。
當第一個測試已經確定結果時,兩者都不評估第二個測試(false &&始終為假,true ||始終為真)

您在尋找這樣的東西嗎?

foreach (DataRow row in dtStatus.Rows)
{
  if (string.IsNullOrEmpty(Convert.ToString(row["UPDATED_STATUS"])) || 
     (Convert.ToString(row["UPDATED_STATUS"]).ToLower() != "pre hoto" && 
     Convert.ToString(row["UPDATED_STATUS"]).ToLower() != "post hoto"))
     {
          ClientScript.RegisterStartupScript(Page.GetType(), "erroralert", "alert('Status cannot be blank for SAP ID entered');", true);
          break;
     }
     else { }
}

我有辦法做到這一點。

if (strFlag == "")
                    {
                        dtStatus = GET_STATUS_FROM_SAPID_FOR_HOTO(dtExcelRows.Rows[i]["Current SAPID"].ToString());

                        if (dtStatus == null && dtStatus.Rows.Count < 0)
                        {
                            ClientScript.RegisterStartupScript(Page.GetType(), "erroralert", "alert('Status cannot be blank for SAP ID entered');", true);
                        }
                        else
                        {
                            dtExcelRows.Rows[i]["UPDATED_STATUS"] = dtStatus.Rows[0][1].ToString();
                            dtExcelRows.AcceptChanges();
                        }
                    }
                }

                DataTable dtGetHotoPre = null;
                var rows = dtExcelRows.AsEnumerable().Where(x => x.Field<string>("UPDATED_STATUS") == "PRE HOTO");

                if (rows.Any())
                {
                    dtGetHotoPre = rows.CopyToDataTable();
                }

                DataTable dtGetHotoPost = null;
                var rowsPost = dtExcelRows.AsEnumerable().Where(x => x.Field<string>("UPDATED_STATUS") == "POST HOTO");

                if (rowsPost.Any())
                {
                    dtGetHotoPost = rowsPost.CopyToDataTable();
                }
                string strFlagStatus = "";
                if (dtGetHotoPre != null)
                {
                    if (dtGetHotoPost != null)
                    {
                        strFlagStatus = "No Process";
                    }
                    else
                    {
                        strFlagStatus = "Process";
                        grdDvHoto.DataSource = dtGetHotoPost;
                    }
                }
                else
                {
                    if (dtGetHotoPost != null)
                    {
                        strFlagStatus = "Process";
                        grdDvHoto.DataSource = dtGetHotoPre;
                    }
                    else
                    {
                        strFlagStatus = "No Process";
                    }
                }

               // if(dtGetHotoPre != null && dtGetHotoPost != null)

                if (strFlagStatus == "No Process")
                {
                    ClientScript.RegisterStartupScript(Page.GetType(), "erroralert", "alert('The sites contains both Pre and Post Hoto Status, so it cannot be uploaded');", true);
                }
                else 
                {
                    // will move ahead.                        
                    grdDvHoto.DataBind();
                }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM