2010-08-16 3 views
4

필드 목록을 디스패치해야합니다. 일부는 편집 가능하고 일부는 편집 불가능합니다. 텍스트 필드, 날짜, 시간 또는 부울과 같은 다른 유형이 될 수 있습니다. Telerik의 RadGrid를 사용하고 있습니다. 내가 만든 테스트 프로젝트를위한 스크린 샷.다른 유형의 편집 컨트롤이있는 Telerik RadGrid

질문 : 항목 생성기에서 4 셀이있는 이유는 무엇입니까? 표시 할 값을 셀 [2]과 셀 [3]에 채워야했습니다. AutoGenerateColumns를 false로 설정하고 두 개의 GridTemplateColumn 정의 만 있습니다.

왜 item.RowIndex가 두 가지로 세분화되어 최대 20 개까지 올라 갔습니까? 10 행이있을 때.

더 좋은 방법이 있나요? 그리드가 실제 요구를 반영하는 경우

 <telerik:RadGrid runat="server" ID="Grid1" Width="100%" Height="500px" GridLines="None" AutoGenerateColumns="false" 
     OnItemCreated="OnGridItemCreated" 
     OnNeedDataSource="OnGridNeedDataSource"> 
     <ItemStyle Wrap="true" /> 
     <AlternatingItemStyle Wrap="true" /> 
     <ClientSettings>      
      <Selecting AllowRowSelect="false" /> 
      <Scrolling AllowScroll="true" UseStaticHeaders="true" /> 
      <Resizing AllowColumnResize="true" ClipCellContentOnResize="true" ResizeGridOnColumnResize="true" EnableRealTimeResize="true" /> 
     </ClientSettings> 
     <MasterTableView> 
      <NoRecordsTemplate> 
       <asp:Label ID="lblNorec1" runat="server" Text="No records"></asp:Label> 
      </NoRecordsTemplate> 
      <Columns> 
       <telerik:GridTemplateColumn UniqueName="FieldDisplayName" HeaderText="Field Name"> 
        <ItemTemplate> 
        </ItemTemplate> 
       </telerik:GridTemplateColumn> 
       <telerik:GridTemplateColumn UniqueName="FieldValue" HeaderText="Value"> 
        <ItemTemplate> 
        </ItemTemplate> 
       </telerik:GridTemplateColumn> 
      </Columns> 
     </MasterTableView> 
    </telerik:RadGrid> 

/

/ grid needs datasource 
    protected void OnGridNeedDataSource(object source, GridNeedDataSourceEventArgs e) 
    { 
     // create a DataSource 
     DataSet ds = new DataSet(); 
     DataTable dt = new DataTable(); 
     dt.Columns.Add(new DataColumn("Field_Display_Name")); 
     dt.Columns.Add(new DataColumn("Field_Value")); 

    for (int i = 0; i < 10; ++i) 
    { 
     DataRow dr = dt.NewRow(); 
     dr["Field_Display_Name"] = "Item Id" + i.ToString(); 
     dr["Field_Value"] = "Value" + i.ToString(); 
     dt.Rows.Add(dr); 
    } 

    ds.Tables.Add(dt); 
    Grid1.DataSource = ds; 
} 

// grid item is created 
protected void OnGridItemCreated(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridDataItem) 
    { 
     GridDataItem item = (GridDataItem)e.Item; 

     // fill in cells 2 and 3. Why are there 4? 

     Label lbl = new Label(); 
     lbl.Text = "Field " + item.RowIndex; 
     item.Cells[2].Controls.Add(lbl); 

     switch (item.RowIndex) 
     { 
      case 2: 
      case 8: 
       RadTextBox txt = new RadTextBox(); 
       txt.ID = "RadTextBox1"; 
       txt.Text = "hello " + item.RowIndex; 
       item.Cells[3].Controls.Add(txt); 
       break; 
      case 4: 
      case 10: 
       RadDatePicker dp = new RadDatePicker(); 
       dp.ID = "RadDatePicker1"; 
       dp.SelectedDate = DateTime.Now; 
       item.Cells[3].Controls.Add(dp); 
       break; 
      case 6: 
      case 12: 
       CheckBox cb = new CheckBox(); 
       item.Cells[3].Controls.Add(cb); 
       break; 
      default: 
       Label lbl2 = new Label(); 
       lbl2.Text = "Value " + item.RowIndex; 
       item.Cells[3].Controls.Add(lbl2); 
       break; 
     } 
    } 
} 

alt text http://img193.imageshack.us/img193/1254/customgrid.png

+0

OnItemDataBound 이벤트로 전환하고 RowIndex 대신 ItemIndex를 사용했습니다. 그게 저에게 0-9에서 인덱스 값을 제공합니다. 분명히 명령 항목에 대해 열 0과 1이 생성됩니다. 인덱스로 참조하는 대신 고유 한 열 이름으로 변경했습니다. // 첫 번째 열에 텍스트를 설정하십시오. 항목 [ "FieldDisplayName"]. Text = "Field"+ index; // secon 열에 컨트롤 추가 RadTextBox txt = new RadTextBox(); txt.ID = "RadTextBox1"; txt.Text = "hello"+ index; 항목 [ "FieldValue"]. Controls.Add (txt); – BrianK

답변

1

, 난 당신이 내부 HTML 테이블로 이동 제안 : 여기

내가 그리드를 선언하는 방법은 ASP FormView. 여기에 표시된 대부분의 것들을 HTML에서 바로 찾을 수 있습니다. 많은 FormView 자습서가 있지만, 당신이 겪고있는 것에 대한 해결책이 많이 생겼습니다. 그 물건을 레그 그리드로 집어 넣는 노력의 복잡성으로 인해 잘못된 방향으로 가게하지 마십시오.

한 번에 10 개의 레코드를 표시하려면 gridview/radgrid가 편리합니다. 한 번에 하나의 레코드 만 있으면 formview를 살펴보십시오.

편집 : 1 년 전에 요청한 것으로 나타났습니다. 이 질문에 대한 답변을 아직 기다리지 않으 셨으면합니다.

관련 문제