2012-07-30 3 views
0

축척을 사용하지 않고 AXPxGridViewDataTextColumn에 대해 C#의 템플릿을 만들고 Eval을 사용하여 DataItem 값을 표시하려면 어떻게해야합니까?ASPxGridView, ITemplate 및 Eval

- 문제는 적절한 값 대신 모든 행에 대해 "< % # Eval ("dataTableField1 ") %>"문자열이 GridView에 표시된다는 것입니다. 여기

public override void DataBind() 
    { 
     ... 
     GridViewDataTextColumn myCol = new GridViewDataTextColumn(); 
     myCol.Caption = "col1"; 
     myCol.FieldName = "dataTableField1"; 
     myCol.DataItemTemplate = new ColumnDataItemTemplate(); 
     theGridView.Columns.Clear(); 
     theGridView.Columns.Add(myCol); 
     theGridView.DataSource = AdjustDataSource(); 
     theGridView.DataBind(); 
     ... 
    } 

    public class ColumnDataItemTemplate : ITemplate 
    { 
     public void InstantiateIn(Control container) 
     { 
      GridViewDataItemTemplateContainer Container = (container as GridViewDataItemTemplateContainer); 
      LiteralControl lit = new LiteralControl("<div id=\"hr\" style=\"height:100%\"><%#Eval(\"dataTableField1\")%></div>"); 
      Container.Controls.Add(lit); 
     } 
    } 

내가이 link에서 가져온 행 높이 수행 할 작업의 예는 다음과 같습니다 :

<dx:GridViewDataTextColumn FieldName="Description" VisibleIndex="3"> 
    <DataItemTemplate> 
     <div id="hr" style="height:100%"> 
      <%#Eval("Description")%> 
     </div> 
    </DataItemTemplate> 
</dx:GridViewDataTextColumn> 

documentation link 비슷한 예를 보여줍니다 여기에

내 시도의 예입니다 마크 업에서 템플릿을 사용하고 있지만 코드에서 수행하고 싶습니다.

템플릿을 만들 때 여기에 link이 있습니다. 사전에

감사합니다,

Soenhay

편집 : 나는 제대로 CustomColumnDisplayText 이벤트에 템플릿 할당하지만 ASPxGridView에 표시된 모든 다른 요소를 이동하여 표시 할 첫 번째 요소를 얻을 수있었습니다 Eval 문자열을 보여줍니다.

답변

0

을 사용 나는이 개 다른 솔루션을했지만, 나는 이것이 가장 (I 다른 감사 것입니다 생각하는 내가 그들을 제거 제안/개선) :이 link에서

 public override void DataBind() 
     { 
      ... 
      GridViewDataTextColumn myCol = new GridViewDataTextColumn(); 
      myCol.Caption = "col1"; 
      myCol.FieldName = "dataTableField1"; 
      myCol.DataItemTemplate = new ColumnDataItemTemplate(); 
      theGridView.Columns.Clear(); 
      theGridView.Columns.Add(myCol); 
      theGridView.DataSource = AdjustDataSource(); 
      theGridView.DataBind(); 
      ... 
     } 

     public class ColumnDataItemTemplate : ITemplate 
     { 
      public void InstantiateIn(Control container) 
      { 
       GridViewDataItemTemplateContainer Container = (container as GridViewDataItemTemplateContainer); 
       LiteralControl lit = new LiteralControl("<div id='hr' style='height:100%; font-size:x-large;'>" + DataBinder.Eval(Container.DataItem, Container.Column.FieldName) + "</div>"); 
       Container.Controls.Add(lit); 
      } 
     } 

나는 경우 사용하지하는 이유가 발견했다 ". CustomColumnDisplayText 이벤트가 템플릿 열에 대한 처리해서는 안된다" 을

link은 DataBinder.Eval 부분의 도움을 받았습니다.

0
을 Heres

예를 들어 있지만 내 데이터베이스와 결합되어, 나는 보통 EditTemplte

</EditItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="BSA" SortExpression="BSA"> 
       <ItemTemplate> 
        <asp:Label ID="lblBSA" runat="server" Text='<%# Bind("BSA") %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
+0

완전히 C# 인 예제가 있습니까? 내 질문을 더 명확하게 편집 할 것입니다. – Soenhay