2010-07-19 4 views
1

에 체크 박스에 TemplateColumn 추가 코드 숨김 나는 autoGenerateColumns = true와 데이터 그리드를 만들려고 오전 :내 절차에서 데이터 그리드 프로그램

  DataGrid NewDg = new DataGrid(); 
      NewDg.AutoGenerateColumns = true; 
      NewDg.Width = Unit.Percentage(100.00); 
      NewDg.DataSource = ds; 
      NewDg.DataBind(); 

나는이 그리드에 체크 박스의 다른 열 (아마도 TemplateColumn)를 추가해야 . 그 방법을 알고 계십니까 ?? 당신은 대신에 캐스팅의 템플릿 컨테이너에 체크 박스를 추가해야합니다

System.InvalidCastException: Unable to cast object of type 'System.Web.UI.WebControls.CheckBox' to type 'System.Web.UI.ITemplate'. at Default2.DataGrid1_ItemDataBound(Object sender, DataGridItemEventArgs e) in c:\Users\saher\Documents\TreeTest\TreeDemo\Default2.aspx.cs:line 116 at System.Web.UI.WebControls.DataGrid.OnItemDataBound(DataGridItemEventArgs e) at System.Web.UI.WebControls.DataGrid.CreateItem(Int32 itemIndex, Int32 dataSourceIndex, ListItemType itemType, Boolean dataBind, Object dataItem, DataGridColumn[] columns, TableRowCollection rows, PagedDataSource pagedDataSource) at System.Web.UI.WebControls.DataGrid.CreateControlHierarchy(Boolean useDataSource) at System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) at System.Web.UI.WebControls.BaseDataList.DataBind() at Default2.BindData() in c:\Users\saher\Documents\TreeTest\TreeDemo\Default2.aspx.cs:line 44 

답변

1

:

   TemplateColumn t = new TemplateColumn(); 
      CheckBox c = new CheckBox(); 
      t.ItemTemplate = (ITemplate)c; 
      NewDg.Columns.Add(t); 

나는 다음과 같은 예외 추적을 얻을 :

나는 것을 노력했다.

여기에 동적 템플릿을 추가하는 방법에 대한 기사를이다 :
http://msdn.microsoft.com/en-us/library/aa712868(VS.71).aspx

+0

감사! 사이트가 정말 도움이됩니다! 그것은 일했다! –

2

이 추가로 열이 항상 존재하는 경우, 코드를 반대로 당신이 디자인 뷰에서 그리드에 추가 할 수없는 이유가 무엇입니까? 또는 특정 조건에서만 표시됩니까?

그렇지 않은 경우 디자인 뷰에서 추가 열을 지정하고 런타임에 autoGenerateColumns가 나머지 열을 추가하게 할 수 있습니다.

+0

특정 조건에서 실제로 생성되었습니다. –

0

코드 숨김으로 만들어야합니까? 그렇다면 http://msdn.microsoft.com/en-us/library/system.web.ui.templatebuilder.aspx을 체크인하십시오. 그렇지 않으면 다음과 같이 선언 할 수 있습니다.

<asp:DataGrid id="MyGrid" runat="server"> 
    <Columns> 
     <asp:TemplateColumn> 
      <HeaderTemplate><b>Check Me!</b></HeaderTemplate> 
      <ItemTemplate> 
       <asp:CheckBox runat="server" /> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
    </Columns>  
</asp:DataGrid> 
+0

또한 정적 데이터 격자 중 하나에서 구현했습니다. 확인란을 선택하면 어떻게 확인할 수 있습니까? 하나의 ID 만 주어진다면? –

+0

글쎄, 어떻게/언제 값을 확인하고 싶어? 표를 통해 루프하는 경우 값은 입니다. foreach (MyGrid.Items의 DataGridItem 항목) { if ((CheckBox로 item.FindControl ("id_of_CheckBox") .Checked) {/ * 논리 여기! /} } – Jocke