c#
  • asp.net
  • .net
  • templatefield
  • detailview
  • 2012-04-18 46 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

    你可以使用LINQ獲得TemplateField通過它的HeaderText

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

    謝謝蒂姆,但我得到這個錯誤。 System.Web.UI.WebControls.DataControlFieldCollection'不包含'OfType'的定義,並且沒有找到接受'System.Web.UI.WebControls.DataControlFieldCollection'類型的第一個參數的擴展方法'OfType'使用指令或程序集引用?) – ABCD 2012-04-18 23:08:32

    +0

    迭代字段有助於! – ABCD 2012-04-18 23:18:00

    +0

    +1感謝您的回答。 – ABCD 2012-04-18 23:19:03

    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 2012-04-18 23:19:16

    相關問題