私は.Net 3.5を使用しています。gridview コントロールを使用しているサイトがあります。基本的に、これは標準のグリッドビューですが、AutoGenerateColumns をオフにして、ItemTemplate を介して独自の列を作成します。カスタム列の 1 つの例を次に示します。
<asp:TemplateField HeaderText="Physician" ItemStyle-Width="70px" HeaderStyle-Width="70">
<ItemTemplate>
<asp:Label ID="lblPhysician" runat="server" Text='<%# Bind("LastName") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
コード ビハインドでは、SQL クエリに基づいてデータテーブルに入力し、それを gridview データソースとして設定します。ラベルは通常、ポストバック中に上記の Bind 関数に基づいて設定されます。ただし、現在、エイリアス名を使用する SQL クエリがあります。クエリはかなり大きいですが、例を次に示します。
SELECT LastName, COUNT(Case WHEN <condition> THEN 1 END) AS ABC
FROM tablename WHERE <condition> Group By LastName
問題は、Bind コマンドを LastName に使用しているため、ABC で使用できないことです。エイリアス列のデータが返されますが、LastName 以外のグリッドビューには何も表示されません。AutoGenerateColumns を true に設定すると、グリッドビューはすべて正しいデータにバインドされますが、これはページが機能するために必要な方法ではありません。エイリアス名を介して列の値を手動でコントロールにバインドできないのは何ですか?
ありがとうございます。さらに説明が必要な場合はお知らせください。