2016-08-31 33 views
1

從此代碼我試圖只顯示包含Station_From_Code列中的字段「DBY」和Station_To_Column中的「MAT」的數據行。這將被打印到HTML頁面上。這些字段絕對在數據表中,但是當我運行這個cod時,表是空的。我不習慣在C#中使用數據表,因此對於糟糕的編碼表示歉意。如何顯示基於列值的特定數據行

dynamic schedluedContent = JsonConvert.DeserializeObject(scheduledJson); 
      JArray items2 = new JArray(); 
      foreach (JObject stops in schedluedContent.stops) 
      { 
        DataTable dt = new DataTable(); 
        DataRow dr; 
        dr = dt.NewRow(); 
        dr["From_Station_Code"] = stops["station_code"]; 
        dr["To_Station_Code"] = stops["station_code"]; 

        dt.Rows.Add(dr); 

        DataRow[] result = dt.Select("From_Station_Code = 'DBY' AND To_Station_Code = 'MAT'"); 

        dt.Rows.Add(result); 
        GridViewTrainTimes.DataSource = dt; 
        GridViewTrainTimes.DataBind(); 
       } 
+0

你試過只使用通配符和選擇所有行,以確保您獲得返回結果和您的連接是好的? –

+0

你能解釋什麼是停止? – Developer

+0

我已添加一些代碼 – kieron

回答

0

您可以使用查找匹配行並添加新數據表,只包含匹配行數據,然後您可以將此dt綁定到gridview。

DataTable dt = new Datatable(); // Lets this datatable have data; 
Datatable dt2 = new Datatable(); // Copy all matching rows 
foreach (DataRow dr in dt.Rows) 
{ 
if (dr["From_Station_Code"].ToString() == "DBY" && dr["To_Station_Code"].ToString() == "MAT") 
{ 
    dt2.Rows.Add(dr); 
} 
} 
GridViewTrainTimes.DataSource = dt; 
GridViewTrainTimes.DataBind(); 
0

很長一段時間我還沒有看到過使用數據庫表的這種風格的代碼! EntityFramework進行了改變,並且確實減輕了使用數據庫的方式,並防止了在代碼中使用SQL命令的不同風險。

如果使用EF,你的代碼將成爲像波紋管:

var rows = myDBContext.MyTable.Where(x=>x.From_Station_Code == "DBY" && x.To_Station_Code == "MAT"); 
GridViewTrainTimes.DataSource = rows;