by WebSurfer
2010年8月2日 12:35
GridView の n 番目(スタートは n = 0)の列名は、通常、GridView1.HeaderRow.Cells[n].Text のようにして取得できますが、AllowSorting プロパティが true になっていると、それでは取得できません(結果は "" になります)。
何故なら、GridView1.HeaderRow.Cells[n] には LinkButton コントロールが配置され、LinkButton の Text プロパティに列名が設定されるからです。
その場合は、以下のようにして取得できます。
string headerText;
foreach (Control ctl in GridView1.HeaderRow.Cells[n].Controls)
{
if (ctl is LinkButton)
{
headerText = ((LinkButton)ctl).Text;
break;
}
}
たぶん、GridView1.HeaderRow.Cells[n].Controls[0] が LinkButton になると思いますが、保証の限りではないので、ちょっと冗長かもしれませんが、上記のようにループで回して取得するように考えました。