2016-09-27 65 views
2

我真的很難包裝數據表的使用。因爲我一直在嘗試使用它們更積極,現在這是我的問題表面。將數據綁定到中繼器

此代碼返回沒有錯誤,但沒有數據綁定到Repeater:

頁:

<asp:Repeater ID="RepeaterBrand" runat="server"> 
    <ItemTemplate> 
     <p><%# Eval("products_name")%></p> 
    </ItemTemplate> 
</asp:Repeater> 

代碼隱藏:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Request.QueryString["brand"] != null && !IsPostBack) 
    { 

     var Brand = (Request.QueryString["brand"]); 

     SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString()); 
     SqlCommand cmd = new SqlCommand("SELECT * FROM Table_Products WHERE products_brand = @Pr_brand", conn); 
     cmd.Connection = conn; 
     cmd.Parameters.Add("@Pr_brand", System.Data.SqlDbType.VarChar).Value = Brand; 
     DataTable dt = new DataTable(); 
     conn.Open(); 
     SqlDataReader reader = cmd.ExecuteReader(); 
     if (reader.HasRows && reader.Read()) 
     { 
      dt.Load(reader); 
      RepeaterBrand.DataSource = dt; 
      RepeaterBrand.DataBind(); 
     } 
     conn.Close(); 
    } 
} 

我很新的C#,所以我可能需要一些視覺幫助來獲得這個。

預先感謝您。

我希望這可以幫助任何人,這是我在JaydipJ向我展示語法之後結束的。

 if (Request.QueryString["brand"] != null && !IsPostBack) 
    { 

     SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString()); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = conn; 
     var Brand = (Request.QueryString["brand"]); 
     cmd.CommandText = "SELECT * FROM Table_Products WHERE products_brand = @Pr_brand"; 
     cmd.Parameters.Add("@Pr_brand", System.Data.SqlDbType.VarChar).Value = Brand; 

     SqlDataAdapter adapter = new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     adapter.Fill(dt); 
     RepeaterBrand.DataSource = dt; 
     RepeaterBrand.DataBind(); 
+0

你有一個調試器。請嘗試使用它。 –

+0

你有一個額外'''在Eval你應該刪除它'

<%#Eval(「products_name」)%>

' – jackjop

+0

是的,我已經刪除了,但它不是原因,我一直在使用除蟲器。它告訴我,一切運行平穩,所有的值都被收集起來,並且我填充的數據表(不是空的),但是中繼器不像任何數據顯示那樣行爲 –

回答

1

不要從SQLDataReader讀取數據。使用它,因爲它是填充數據表

if (reader.HasRows) 
{ 
    dt.Load(reader); 
    RepeaterBrand.DataSource = dt; 
    RepeaterBrand.DataBind(); 
} 
+1

是的,這是我需要看到的,那是我期待的視覺幫助,謝謝你,謝謝。 –

0

試試這個代碼它工作。

  try 
      { 
       con.Open(); 
       SqlCommand cmd = new SqlCommand("select Mst_Emp_Login.Emp_Uname from Mst_Emp_Login", con); 
       SqlDataAdapter adp = new SqlDataAdapter(cmd); 
       DataSet ds = new DataSet(); 
       adp.Fill(ds); 
       Repeater1.DataSource = ds; 
       Repeater1.DataBind(); 
       ds.Dispose();adp.Dispose(); 
       cmd.Dispose(); 
       con.Close();con.Dispose(); 
      } 
      catch(Exception err) 
      { 
       throw err; 
      }