c#
  • asp.net
  • .net
  • templatefield
  • detailview
  • 2012-04-18 25 views 1 likes 
    1
    <asp:DetailsView... 
        <asp:TemplateField HeaderText="My CheckBox" SortExpression="DataID" > 
         <InsertItemTemplate> 
           <asp:CheckBox ID="T01cbx" runat="server" Visible ="false" Checked='<%# Bind("DataID") %>' AutoPostBack="True" " /> 
         </InsertItemTemplate> 
        </asp:TemplateField> 
    

    上記のTemplateFieldのIDまたは名前を付けて、コードの背後にあるコードからアクセスしたいと思います。とにかく、IDや名前をつけてTemplateFieldを見つけることはありますか?これはDetailView内にあります。コード内のTemplateFieldにアクセスする方法

    答えて

    3

    あなたはTemplateFieldそれはHeaderTextだことにより、取得するためにLINQを使用することができます。あなたの答えのための

    TemplateField cbField = DetailsView1.Fields.OfType<TemplateField>() 
             .Where(f => f.HeaderText == "My CheckBox") 
             .FirstOrDefault(); 
    
    +0

    Timさん、ありがとうございますが、このエラーが発生します。 System.Web.UI.WebControls.DataControlFieldCollection 'に' OfType 'の定義がなく、' System.Web.UI.WebControls.DataControlFieldCollection '型の最初の引数を受け入れる拡張メソッド' OfType 'が見つかりませんでした使用指示文またはアセンブリ参照?) – ABCD

    +0

    フィールドの反復に役立ちます! – ABCD

    +0

    +1お返事ありがとうございます。 – ABCD

    1

    私は過去にこれをやろうとしましたが、すべての列をループして、それをSortExpressionで変更する関数を作成するよりも良い方法は見つかりませんでした。

    これは私が彼らのSortExpressionで/ショー列を非表示にする機能です。

    public void ShowHideGridColumnBySortExpression(string sortExpression, bool show) 
    { 
        for (int i = 0; i < gvProducts.Columns.Count; i++) 
        { 
         if (gvProducts.Columns[i].SortExpression != null && gvProducts.Columns[i].SortExpression == sortExpression) 
         { 
          gvProducts.Columns[i].Visible = show; 
          break; 
         } 
        } 
    } 
    
    +0

    +1のおかげで。 – ABCD

    関連する問題