2015-05-13 42 views
2

我正在使用分層Telerik網格視圖。我想要隱藏展開/隱藏按鈕如果問題屬於某種類型。我試圖在Grid_ItemDatatbound上實現這一點。無法在網格單元內找到控件

    <CW:GridView ID="rGVEvaluationQuestions" runat="server" Width="99%" OnItemDataBound="rGVEvaluationQuestions_ItemDataBound" 
         OnDetailTableDataBind="rGVEvaluationQuestions_DetailTableDataBind" OnNeedDataSource="rGVEvaluationQuestions_NeedDataSource" 

         AllowPaging="false" ShowHeader="false" GridLines="Both"> 
         <MasterTableView DataKeyNames="ID" AllowMultiColumnSorting="True"> 
          <DetailTables> 
           <Telerik:GridTableView DataKeyNames="ID" Name="LabelQuestion" Width="100%" Height="100px"> 
            <Columns> 
             <Telerik:GridTemplateColumn HeaderText="<%$Resources:LanguageResource, Edit%>" ItemStyle-Width="50px" 
              DataField="ID"> 
              <ItemTemplate> 
               <asp:HiddenField ID="hdnEvalID" runat="server" /> 
               <asp:HiddenField ID="hdnEvaluationQuestionID" runat="server" /> 
               <asp:HiddenField ID="hdnEvaluationQuestionTypeID" runat="server" /> 
               <asp:Label ID="lblQuestionNumber" runat="server"></asp:Label> 
              </ItemTemplate> 
             </Telerik:GridTemplateColumn> 
           <Telerik:GridTemplateColumn ItemStyle-HorizontalAlign="Left"> 
            <ItemTemplate> 
             <asp:Label ID="lblQuestion" runat="server"></asp:Label><br /> 
             <br /> 
             Display="Dynamic"></asp:CustomValidator></td> 
            </ItemTemplate> 
           </Telerik:GridTemplateColumn> 
             //Some Hidden fields and textboxex here 
            </Columns> 
           </Telerik:GridTableView> 
          </DetailTables> 
          <Columns> 
           <Telerik:GridTemplateColumn HeaderText="<%$Resources:LanguageResource, Edit%>" ItemStyle-Width="50px" 
            DataField="ID"> 
            <ItemTemplate> 
             <asp:HiddenField ID="hdnEvalID" runat="server" /> 
             <asp:HiddenField ID="hdnEvaluationQuestionID" runat="server" /> 
             <asp:HiddenField ID="hdnEvaluationQuestionTypeID" runat="server" /> 
             <asp:Label ID="lblQuestionNumber" runat="server"></asp:Label> 
            </ItemTemplate> 
           </Telerik:GridTemplateColumn> 
           <Telerik:GridTemplateColumn ItemStyle-HorizontalAlign="Left"> 
            <ItemTemplate> 
             <asp:Label ID="lblQuestion" runat="server"></asp:Label><br /> 
             <br /> 
             //Some Hidden fields and textboxex here 
              Display="Dynamic"></asp:CustomValidator></td> 
            </ItemTemplate> 
           </Telerik:GridTemplateColumn> 
          </Columns> 
         </MasterTableView> 
        </CW:GridView> 

在這背後的代碼是我在做什麼。

if (evalQuestionType == Coursewhere.BLL.Enums.EvaluationQuestionType.Label) 
{ 
    if (item.Cells.Count > 0) 
    { 
     item.Cells[0].Text = " "; 
     item.Cells[0].Enabled = true; 

    } 

} 
else 
{ 
    item.Cells[0].Text = " "; 

    if (item.Cells[0].Controls.Count>0) 
    { 
     item.Cells[0].Controls[0].Visible = false; 
    } 
    item.Cells[0].Enabled = false; 
    item.Cells[0].Style.Add("background", "#8ea3b9 none"); 
} 

item.cell [0]是具有<input type Button>。不過IM無法在代碼在這裏找到它背後的TD。 一旦找到我想要設置其風格。 我在做什麼錯? 請不要說我能找到td的item.control [0]。但無法找到它內部的控制。是因爲它沒有運行@server?

編輯: 我發現下面的代碼,我呼籲page_prerender。 這使得展開/隱藏按鈕對所有行都不可見。 但我想這隻發生在特定的行。

protected void rGVEvaluationQuestions_PreRender(object sender, EventArgs e) 
     { 
      HideExpandColumnRecursive(rGVEvaluationQuestions.MasterTableView); 
     } 
     public void HideExpandColumnRecursive(GridTableView tableView) 
     { 
      GridItem[] nestedViewItems = tableView.GetItems(GridItemType.NestedView); 
      foreach (GridNestedViewItem nestedViewItem in nestedViewItems) 
      { 
       foreach (GridTableView nestedView in nestedViewItem.NestedTableViews) 
       { 
        if (nestedView.Items.Count == 0) 
        { 
         TableCell cell = nestedView.ParentItem["ExpandColumn"]; 
         cell.Controls[0].Visible = false; 
         cell.Text = " "; 
         nestedViewItem.Visible = false; 
        } 
        if (nestedView.HasDetailTables) 
        { 
         TableCell cell = nestedView.ParentItem["ExpandColumn"]; 
         if (cell.Controls.Count > 0) 
         { 
          cell.Controls[0].Visible = true; 
          cell.Text = " "; 
          nestedViewItem.Visible = true; 
         } 
        } 
       } 
      } 
     } 

有人可以幫我在數據綁定功能上使用此功能的功能,以便我可以禁用/隱藏適當的行的擴展按鈕?

回答

0

我不知道爲什麼這不起作用。

if (item.Cells[0].Controls.Count>0) 
    { 
     item.Cells[0].Controls[0].Visible = false; 
    }  

最後這個工作。

TableCell tccell = item.Cells[0]; 
       if (evalQuestionType == Coursewhere.BLL.Enums.EvaluationQuestionType.Label) 
        { 
         tccell.Controls[0].Visible = true; 

        } 
        else 
        { 
         tccell.Controls[0].Visible = false; 

        } 
相關問題