2013-11-09 53 views
0

現在我要逐行檢索一個數據表值。我找到了一種方法來完成它,但我無法得到我想要的結果。它只檢索一條記錄。下面是代碼:按行檢索DataTable值

MySqlConnection connStr = new MySqlConnection(); 
connStr.ConnectionString = "Server = localhost; Database = healthlivin; Uid = root; Pwd = khei92;"; 
String searchPerson = "SELECT PersonIDB from contactFriend WHERE PersonID = @id"; 
MySqlCommand cmdSearch = new MySqlCommand(searchPerson, connStr); 
connStr.Open(); 
cmdSearch.Parameters.AddWithValue("@id", "M000001"); 


MySqlDataReader dtrRead2 = cmdSearch.ExecuteReader();    
dt.Load(dtrRead2); 

dtrRead2.Close(); 
connStr.Close(); 


if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
{ 
    String s = (String)(DataBinder.Eval(e.Item.DataItem, "PersonID")); 
    String val = ""; 


    for (int i = 0; i < dt.Rows.Count ; i++) 
    { 
     //val = dt.Rows[i]["PersonIDB"].ToString(); 

     if (dt.Rows[i]["PersonIDB"].ToString().Equals(s)) 
     e.Item.Visible = false; 
     else 
     e.Item.Visible = true; 
    } 

編輯

頁面加載:

​​

對於的ItemDataBound:

protected void ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     //String personID = ""; 
     DataTable dt = new DataTable(); 

     try 
     { 
      MySqlConnection connStr = new MySqlConnection(); 
      connStr.ConnectionString = "Server = localhost; Database = healthlivin; Uid = root; Pwd = khei92;"; 
      String searchPerson = "SELECT PersonIDB from contactFriend WHERE PersonID = @id"; 
      MySqlCommand cmdSearch = new MySqlCommand(searchPerson, connStr); 
      connStr.Open(); 
      cmdSearch.Parameters.AddWithValue("@id", "M000001"); 

      MySqlDataReader dtrRead2 = cmdSearch.ExecuteReader();    
      dt.Load(dtrRead2); 

      dtrRead2.Close(); 
      connStr.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 

     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      String s = (String)(DataBinder.Eval(e.Item.DataItem, "PersonID")); 
      String val = ""; 


       for (int i = 0, count = dt.Rows.Count; i < count ; i++) 
       { 
        //val = dt.Rows[i]["PersonIDB"].ToString(); 
        //DataRow dr = dt.Rows[i]; 

        if (dt.Rows[i]["PersonIDB"].ToString().Equals(s)) 
         e.Item.Visible = false; 
        else 
         e.Item.Visible = true; 
       }    
     } 
    } 
+0

您可能想從連接字符串中刪除用戶名/密碼(並更改服務器上的密碼...) – dav1dsm1th

回答

0

你沒有正確填充你的中繼。它應該是這樣的:

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> 
    <HeaderTemplate> 
     <table> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <tr> 
      <td>'<%# Eval("PersonIDB")%>'</td> 
     </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
     </table> 
    </FooterTemplate> 
</asp:Repeater> 

而且直放站的ItemDataBound可能是這樣的:

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     // Do anything special you want for the item 
    } 
} 

而且不要忘記將數據源綁定到中繼器,通常在頁面加載:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     LoadData(); 
    } 
} 

當您LoadData()方法應該是這樣的:

private void LoadData() 
{ 
    DataTable dt = new DataTable(); 
    MySqlConnection connStr = new MySqlConnection(); 
    connStr.ConnectionString = "Server = localhost; Database = healthlivin; Uid = root; Pwd = khei92;"; 
    String searchPerson = "SELECT PersonIDB from contactFriend WHERE PersonID = @id"; 
    MySqlCommand cmdSearch = new MySqlCommand(searchPerson, connStr); 
    connStr.Open(); 
    cmdSearch.Parameters.AddWithValue("@id", "M000001"); 

    MySqlDataReader dtrRead2 = cmdSearch.ExecuteReader(); 
    dt.Load(dtrRead2); 

    dtrRead2.Close(); 
    connStr.Close(); 

    Repeater1.DataSource = dt; 
    Repeater1.DataBind(); 
} 

編輯:

看着你的編輯後,我會建議更改查詢字符串中的頁面加載:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     try 
     { 
      MySqlConnection connStr = new MySqlConnection(); 
      connStr.ConnectionString = "Server = localhost; Database = healthlivin; Uid = root; Pwd = khei92;"; PesronIDB 
      //Change query to include PersonIDB    
      String searchOverall = "SELECT P.PersonID, P.PersonName, P.Email, P.Picture, CF.PersonIDB FROM Person P LEFT JOIN contactFriend CF ON P.PersonID = CF.PersonID"; 
      MySqlCommand cmdSearch = new MySqlCommand(searchOverall, connStr); 
      connStr.Open(); 

      MySqlDataReader dtrRead2 = cmdSearch.ExecuteReader(); 
      friendRepeater.DataSource = dtrRead2; 
      friendRepeater.DataBind(); 
      dtrRead2.Close(); 
      dtrRead2 = null; 

      connStr.Close(); 

     } 
     catch (Exception ex) 
     { 
      //MessageBox.Show(ex.ToString()); 
     }    
    }    
} 

在直放站的ItemDataBound你不需要運行任何查詢。

+0

嗨..請參閱我的編輯。在此之前,我已經在我的頁面加載了數據綁定。我把Itemdatabound中的搜索語句用於過濾數據。我這樣做是錯的嗎? – user2769165

+0

您只需將連接添加到第一個查詢中即可。請參閱我的編輯。 – afzalulh