2016-03-27 13 views
0

フィールドのヘッダーテンプレートにテンプレートフィールドのヘッダーテキストが設定されているasp .netアプリケーションにGridViewがあり、 (リソースファイルから来る)ラベルとして。以下は、このヘッダーテンプレートからGridView TemplateFieldのヘッダーテキストプロパティにアクセスするとき

var headerText = gridView.Columns[0].HeaderText; 

のように列に設定されていますが、値が空に来ていると私はからそれを取得することはできませんよ、私はHeaderTextにアクセスしようとしています後ろのコードでは、コード

<asp:GridView ID="gridView" ClientIDMode="Static" runat="server" AutoGenerateColumns="False" meta:resourcekey="grdViewResource"> 
    <Columns> 
     <asp:TemplateField meta:resourcekey="TemplateFieldResource1"> 
      <HeaderTemplate> 
       <asp:Label ID="lblNameHeader" Text="Name" runat="server" meta:resourcekey="lblNameHeaderResource1"/> 
      </HeaderTemplate> 
      <ItemTemplate> 
       <asp:Label ID="lblNameValue" Text='<%# Eval("Name") %>'/> 
      </ItemTemplate> 
    </Columns> 
</asp:GridView> 

ですgridView.ColumnsのHeaderTemplateプロパティも同様です。

私を助けてください。

+0

HeaderTextプロパティは、ItemTemplateのHeaderTextプロパティで使用します。 HeaderTemplateではありません。 – mason

+0

@mason:申し訳ありません。私はそれを得ることができませんでした:(あなたは、マークアップのやり方が間違っていると言っていましたか? – Niranjan

+1

@Niranjan - HeaderTemplateを使用する代わりにTemplateFieldのHeaderTextプロパティを設定すると、同じHeaderTextプロパティの背後にある – ConnorsFan

答えて

1

コードにはいくつかの問題があります。

閉じる</asp:TemplateField>がありません。 asp:Labelrunat="server"属性がありません。

あなたは.HeaderTextプロパティを使用する場合、これはあなたのマークアップする必要があります:

<asp:GridView ID="gridView" ClientIDMode="Static" runat="server" AutoGenerateColumns="False" meta:resourcekey="grdViewResource"> 
    <Columns> 
     <asp:TemplateField meta:resourcekey="TemplateFieldResource1" HeaderText="Name"> 
      <ItemTemplate> 
       <asp:Label ID="lblNameValue" Text='<%# Eval("Name") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

あなたはそれでカスタムマークアップとHeaderTemplateを使用する場合は、列をキャストする必要がありますTemplateFieldに渡し、その中のコントロールにアクセスします。

+0

コードの謝罪:)私はこれを手作業で質問にタイプしました。私はこの方法を採用しました。生産コードにHeaderTemplateがあるので、今度はすべての列をこのように変更する必要があります。 – Niranjan

関連する問題