2014-01-09 6 views
1

Я создал запрос MySQL, который выдает следующий выводВыбрать только определенные столбцы и отображать те в GridView управления в ASP.NET

name club   countryid positionId description playersId DeleteFlag totalClubs 
Sidd qegvwrwrvbwrdb 9  4  dvwrd 17   0   rvwb  


goals caps positionName countryName 
1212 12 Angriff  Chile 

запроса:

select 
    a.*, p.positionName, c.countryname 
from 
    soccerplayers a 
left join 
    countries c on c.countryId = a.countryId 
left join 
    positions p on p.positionId = a.positionId 
where 
    a.DeleteFlag = 0 

Я хочу только имя, клуб , описание, общие клубы, цели, шапки, positionName и COUNTRYNAME

C# код

string cs = ConfigurationManager.AppSettings["ConnectionString"]; 

MySqlConnection register = new MySqlConnection(cs); 
register.Open(); 

MySqlCommand cmd = new MySqlCommand("select a.*,p.positionName,c.countryname from soccerplayers a left join countries c on c.countryId=a.countryId left join positions p on p.positionId=a.positionId where a.DeleteFlag=0", register); 

MySqlDataAdapter dataadapter = new MySqlDataAdapter(cmd); 
cmd.ExecuteNonQuery(); 

DataSet ds = new DataSet(); 
dataadapter.Fill(ds, "soccerplayers"); 
register.Close(); 

DataTable dt = new DataTable(); 
dt = ds.Tables["soccerplayers"]; 

foreach (DataRow dr in dt.Rows) 
{ 
    string name = dr[0].ToString(); 
    string club = dr[1].ToString(); 
    string country = dr[11].ToString(); 
    string position = dr[10].ToString(); 
    string TotalClubs = dr[7].ToString(); 
    string description =dr[4].ToString(); 
    string Goals = dr[8].ToString(); 
    string caps = dr[9].ToString(); 

    List<string> list = new List<string>(); 
    list.Add(name); 
    list.Add(club); 
    list.Add(country); 
    list.Add(position); 
    list.Add(TotalClubs); 
    list.Add(Goals); 
    list.Add(caps); 
    list.Add(description); 
} 

GridView1.DataSource = list; 
GridView1.DataBind(); 
+0

В чем проблема, с которой вы сталкиваетесь? –

+0

Я хочу только имя, клуб, описание, общие клубы, цели, колпаки, positionName и countryName –

+0

: «Поле или свойство с именем« name »не было найдено в выбранном источнике данных». Exception –

ответ

1

Прежде всего, ваш код может полностью избавиться, если вы измените определение таблицы soccerplayers, потому что все эти ординалы могут измениться. Вы должны переписать запрос так, чтобы он был A) Не использует select * (never use select *); и B) извлекает только нужные вам поля.

Если вы переписываете этот запрос, вы можете просто привязать результаты к gridview без повторения через DataTable, назначая переменные, создавая список и т. Д. Когда вы привязываете таблицу, вы можете выбрать для AutoGenerateColumns значение true (to облегчите для вас) или false (если вам нужно больше контроля над макетом).

+0

Ну, я пишу это querry, потому что soccplayers не содержит CountryName и positionName, потому что на лицевой стороне Конечная CMS i can not countryName и positionId with Numerics –

+0

Вы все равно можете сделать соединение без выбора *, назвав нужные поля. (т. е. выберите a.FirstName, a.LastName ... FROM soccerplayer a JOIN ...). В вашем коде вы можете сделать dr ["FirstName"] вместо ординалов, которые сделают так, чтобы ваш код не сломался, если ваша таблица переопределена. –

+0

все в порядке, я попробую ваш метод. –