2015-05-13 2 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> .however IM не смог найти его здесь в коде позади. После того, как я нашел, я хочу установить его стиль. Что я делаю неправильно? Пожалуйста, не то, что им удалось найти item.control [0], который является td. Но не в состоянии заплатить контроль, который внутри него. Это потому, что он не работает @server?

EDIT: Я нашел следующий код, который я вызываю на странице_prerender. Это делает кнопку expand/hide невидимой для всех строк. Но я хочу, чтобы это произошло только для определенных строк.

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; 
         } 
        } 
       } 
      } 
     } 

может кто-то пожалуйста, помогите мне в использовании функции этой функции на DataBound функции, так что я мог бы расширить кнопку соответствующей строки отключит/невидимым?

ответ

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; 

        } 
Смежные вопросы