2013-05-17 60 views
0

我使用Telerik的從一個RadGrid並試圖根據CheckBox在頁面上其他地方的切換一個RadioButtonListAutoPostBack財產。使用eval設置AutoPostBack屬性中的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> 

我得到的錯誤:DataBinding: 'System.Data.DataRowView'不包含屬性的名稱True。是否可以這樣做,還是我需要在ItemDataBound之內做到這一點?

+0

我不熟悉,但我已經使用評估和演示經常用轉發器radgrid控件它始終處於綁定到中繼器的數據的上下文中,這在這裏看起來是一樣的。它看起來像試圖在被綁定到RadGrid的DataRowView中查找chkAutoSave.Checked.ToString()的計算結果,即True。試着擺脫Eval聲明。 <%chkAutoSave.Checked%> – ammills01

回答

0

我繼續前進,並使用ItemDataBound,這工作正常......但我會感興趣,如果有人有這樣的解決方案。

0

先給一個ID,模板欄目

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

代碼背後:

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

問候

+0

沒錯,這是用我知道有效的ItemDataBound做的。 – daniel