2014-01-09 75 views
1
顯示那些在GridView控件

我已經產生了MySQL查詢其給出了下面的輸出只選擇特定的列和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和國家名稱

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

我只想要名稱,俱樂部,說明,總分俱樂部,目標,大寫字母,位置名稱和國家名稱 –

+0

它表示「在選定的數據源中找不到名稱爲'名稱'的字段或屬性。異常 –

回答

1

首先,如果您修改了soccerplayers表的定義,那麼您的代碼可能會徹底廢除,因爲所有這些序號可能會發生變化。你應該考慮重寫查詢,以便它A)不使用select *(永不使用select *);和B)只檢索你需要的字段。

如果您重寫了該查詢,您可以將結果綁定到gridview,而無需迭代DataTable,分配變量,創建列表等。綁定表時,可以選擇將AutoGenerateColumns設置爲true(以讓你更容易)或假(如果你需要更多的控制佈局)。

+0

嗯,我寫這個querry因爲soccplayers不包含CountryName和positionName,因爲在前端CMS我不能countryName和positionId與Numerics –

+0

你仍然可以沒有選擇*通過命名你想要的字段進行連接。 (即,選擇a.FirstName,a.LastName ... FROM soccerplayer a JOIN ...)。在你的代碼中,你可以做dr [「FirstName」]而不是使用的序號,這樣你的代碼在你的表被重新定義時不會中斷。 –

+0

好吧,我會嘗試你的方法 –