2013-05-17 3 views
0

J'utilise un RadGrid de Telerik et d'essayer de passer une propriété de AutoPostBackRadioButtonList basée sur une CheckBox ailleurs sur la page.Utiliser eval pour définir la propriété AutoPostBack dans ItemTemplate

<telerik:RadGrid ID="rg" runat="server" Skin="Office2010Silver" GridLines="Both" OnNeedDataSource="rg_NeedDataSource" 
       OnItemDataBound="rg_ItemDataBound"> 
    <MasterTableView Width="100%" DataKeyNames="StudentID, Response, Tested"> 
     <Columns> 
      <telerik:GridBoundColumn UniqueName="StudentName" HeaderText="Student Name" DataField="StudentName"></telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="StudentID" HeaderText="Student ID" DataField="StudentID"></telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Answer" HeaderText="Answer" DataField="Answer"></telerik:GridBoundColumn> 
      <telerik:GridBoundColumn UniqueName="Response" HeaderText="Score" DataField="Response"></telerik:GridBoundColumn> 
      <telerik:GridTemplateColumn HeaderText="Score" ItemStyle-Wrap="false"> 
       <ItemTemplate> 
        <asp:RadioButtonList ID="rblScore" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal" OnSelectedIndexChanged="rblScore_IndexChanged" AutoPostBack='<%#Eval(chkAutoSave.Checked.ToString()) %>'></asp:RadioButtonList> 
       </ItemTemplate> 
      </telerik:GridTemplateColumn> 
     </Columns> 
    </MasterTableView> 
</telerik:RadGrid> 

Je reçois l'erreur: DataBinding: 'System.Data.DataRowView' ne contient pas une propriété avec le nom True. Est-il possible de le faire de cette façon, ou ai-je besoin de le faire au sein de ItemDataBound?

+0

Je ne connais pas le RadGrid mais je l'ai utilisé Eval assez souvent avec des répéteurs et c'est toujours dans le contexte des données qui sont liées au répéteur, ce qui semble être le même ici. Il semble qu'il essaie de trouver ce que chkAutoSave.Checked.ToString() évalue, ce qui est vrai, dans le DataRowView qui est lié au RadGrid. Essayez de vous débarrasser de la déclaration Eval. <% chkAutoSave.Checked%> – ammills01

Répondre

0

Je suis allé de l'avant et utilisé ItemDataBound et cela fonctionne bien ... mais je serais intéressé si quelqu'un a une solution à cela.

0

d'abord donner un identifiant au modèle colonne

<telerik:GridTemplateColumn HeaderText="Score" ItemStyle-Wrap="false" ID="Score"> 
       <ItemTemplate> 
        <asp:RadioButtonList ID="rblScore" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal" OnSelectedIndexChanged="rblScore_IndexChanged" AutoPostBack='<%#Eval(chkAutoSave.Checked.ToString()) %>'></asp:RadioButtonList> 
       </ItemTemplate> 
      </telerik:GridTemplateColumn> 

Dans Code Derrière:

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
      { 
    if (e.Item is GridDataItem) 
          { 
    GridDataItem dataBoundItem = e.Item as GridDataItem; 
    Bool _boolChecked=Convert.ToBoolean(dataBoundItem["chkAutoSave.Checked"].toString()); 
       ((RadioButtonList)dataBoundItem["Score"].FindControl("rblScore")).AutoPostBack= _boolChecked; 
    } 
    } 

Cordialement

+0

À droite, c'est le cas avec ItemDataBound que je connais. – daniel

Questions connexes