2014-02-26 60 views
0

我有一個顯示puja.i列表的repeater.i也使用了一個datalist來顯示廟的名字。每當我點擊搜索它只顯示中繼器的最後一個值,即它只取最後一個值中繼器....我的問題是如何使用中繼器內的循環? 這裏是後面我如何使用DataList和Repeater我的代碼:如何迭代使用中繼器?

protected void Page_Load(object sender, EventArgs e) 
    { 

     //lblnodatafound.Visible = true; 
     //lbldatafound.Visible = false; 
     if (Request.QueryString["search"] != null) 
     { 
      var dt = new DataTable("Data"); 
      String source = Request.QueryString["search"]; 
      var splitseparator = new string[] { " " }; 
      String[] result = source.Split(splitseparator, StringSplitOptions.RemoveEmptyEntries); 

      foreach (String s in result) 
      { 
       if (IsAlphaNumeric(s) == true) 
       { 
        var dttemp = new DataTable(); 
        dttemp = fnsearch(s); 
        dt.Merge(dttemp, true); 
       } 
      } 
      if (dt.Rows.Count != 0) 
      { 


        int count = dt.Rows.Count; 
        if (dt.Rows.Count > 0) 
        { 
         DataList1.DataSource = dt; 
         DataList1.DataBind(); 

         lblnodatafound.Visible = false; 
         lbldatafound.Visible = true; 
     //added the repeater to display the list of puja 

          for (int i = 0; i < dt.Rows.Count; i++) 
         { 
          String id = dt.Rows[i]["id"].ToString(); 
          string query = "select puja.id,puja.name as puja_name, mandir.name as mandir_name from puja,mandir where mandir.id= puja.with_mandir and puja.with_mandir = '" + id + "'"; 
          conn.Open(); 
          MySqlCommand cmd = new MySqlCommand(query, conn); 
          MySqlDataAdapter adp = new MySqlDataAdapter(cmd); 
          DataTable dt1 = new DataTable(); 
          adp.Fill(dt1); 
          conn.Close(); 


           if (dt1.Rows.Count > 0) 
           { 
            lblmandirpuja.Text = "Poja in " + dt1.Rows[0]["mandir_name"]; 
            foreach (RepeaterItem repeatItem in Repeater1.Items){ 

            Repeater1.DataSource = dt1; 

            Repeater1.DataBind(); 
             } 

           } 

         } 
        } 
        } 
        else 
        { 
         lblnodatafound.Visible = true; 
         lbldatafound.Visible=false; 

        } 

     } 
     } 
+0

您正在分配循環內的中繼器數據源'for(int i = 0;我

+0

如果我刪除了循環,那麼只有第一個值diplayed,我也必須刪除變量我這樣,因爲變量我不能顯示錶的列表... 。還有另一種可能性嗎? – user3132068

回答

0

試圖改變這一行:

if (dt1.Rows.Count > 0) 

類似:

for(int i = 0; i < dt1.Rows.Count; i++) 

這一個:

lblmandirpuja.Text = "Poja in " + dt1.Rows[0]["mandir_name"]; 

0爲我:

lblmandirpuja.Text = "Poja in " + dt1.Rows[i]["mandir_name"]; 
+0

它不工作,因爲每當我保持o而不是我它結果第一個值的數據..因爲0代表第一個寺廟名單和1代表第二個寺廟列表分別....可以üPLZ建議另一個答案????? – user3132068

+0

噢好吧,我意識到你沒有在foreach中使用(foreach(RepeaterItems中的RepeaterItem repeatItem))repeatItem,也許錯誤在這一點上。 –

+0

我已經刪除了foreach(RepeaterItem repeater1.Items中的repeatItem)。該部分沒有用 – user3132068