Definitely check over these lines...
DataSet ds = new DataSet();
DataTable dt = new DataTable();
da.Fill(dt);
Repeater1.DataSource = cmd1.ExecuteReader();
...which should be more like this...
DataSet ds = new DataSet();
da.Fill(ds);
if (ds.Tables.Count > 0)
{
DataTable dt = ds.Tables[0];
Repeater1.DataSource = dt;
Repeater1.DataBind();
}
You shouldn't be binding to a IDataReader (result of ExecuteReader). Instead, fill your DataSet, get a DataTable from the results and bind to that