2017-06-14 3 views
0

最初の問題では、自分のページに2つのコントロール(RadcomboxとTreelistコントロール)があります。 RadcomboboxのSelectedIndexChangedについては、SelectedIndexChangedでNeedDatasourceイベントを発生させたい、database.Nowからデータを取り込んでいます。どうすればいい?NeedDatasourceを使ってプログラムでバインドしますか?

第二の問題、

私はneeddatasourceでいくつかの問題に直面していますように、私は手動でそれが最初で唯一の親ノードを示して結合radtreelist.Afterの方法を使用してデータバインドバインドされています。

RadTreelistのPageSizeコンボをクリックすると、それぞれの子ノードが読み込まれます。なぜこのようなことが起こっていますか?

<telerik:RadComboBox runat="server" ID="rcb_testtype" AutoPostBack="True" OnSelectedIndexChanged="rcb_testtype_OnSelectedIndexChanged"> 
       <Items> 
        <telerik:RadComboBoxItem runat="server" Text="Select a Test Type" Value="-1" /> 
        <telerik:RadComboBoxItem runat="server" Text="Practise Test" Value="pt" /> 
        <telerik:RadComboBoxItem runat="server" Text="Normal Test" Value="nt" /> 
       </Items> 
      </telerik:RadComboBox> 


<telerik:RadTreeList ID="rtl_specific_topic" runat="server" 
       ParentDataKeyNames="parent_topicid" DataKeyNames="topicid" AllowPaging="true" RenderMode="Classic" Skin="WebBlue" 
       AutoGenerateColumns="false" AllowSorting="true" ExpandCollapseMode="Client" AllowRecursiveSelection="False" OnItemDataBound="rtl_specific_topic_OnItemDataBound" 
       AllowMultiItemSelection="true" OnItemCommand="RadTreeList1_ItemCommand" OnPageSizeChanged="RadTreeList1_PageSizeChanged" OnPageIndexChanged="RadTreeList1_PageIndexChanged"> 

       <Columns> 
        <telerik:TreeListSelectColumn HeaderStyle-Width="38px"> 
        </telerik:TreeListSelectColumn> 

        <telerik:TreeListBoundColumn DataField="parent_topicid" UniqueName="parent_topicid" HeaderText="Parent Topic Id" Visible="False"> 
        </telerik:TreeListBoundColumn> 
        <telerik:TreeListBoundColumn DataField="topicid" UniqueName="topicid" HeaderText="Topic ID" Visible="False"> 
        ion" UniqueName="description" HeaderText="Topic Name"> 
        </telerik:TreeListBoundColumn> 
        <telerik:TreeListTemplateColumn HeaderText="Weightage" UniqueName="syllabus_weightage" HeaderStyle-Width="95px" ItemStyle-Width="95px"> 
         <ItemTemplate> 
          <telerik:RadNumericTextBox runat="server" ID="rntb_weightage" MinValue="0" Width="80px" MaxValue="100" EmptyMessage="weightage(%)" AllowRounding="true"></telerik:RadNumericTextBox> 
         </ItemTemplate> 
        </telerik:TreeListTemplateColumn> 
        <telerik:TreeListTemplateColumn HeaderText="Weightage" UniqueName="quest_category"> 
         <ItemTemplate> 
          <asp:DropDownList ID="ddl_quest_category" runat="server" Width="100px" style="right: 1px;"> 
           <asp:ListItem Text="select a question type" Value="-1"></asp:ListItem> 
           <asp:ListItem Text="Multiple Choice" Value="1"></asp:ListItem> 
           <asp:ListItem Text="True/False" Value="2"></asp:ListItem> 
           <asp:ListItem Text="Essay Writing" Value="3"></asp:ListItem> 
           <asp:ListItem Text="Pictorial" Value="4"></asp:ListItem> 
           <asp:ListItem Text="Short Question" Value="5"></asp:ListItem> 
          </asp:DropDownList> 
         </ItemTemplate> 
         <HeaderStyle Width="90px"></HeaderStyle> 
        </telerik:TreeListTemplateColumn> 
        <telerik:TreeListTemplateColumn HeaderText="Set Level" UniqueName="level"> 
         <ItemTemplate> 
          <telerik:RadSlider runat="server" ID="rs_level" Skin="Web20" Width="490px" AutoPostBack="True" 
           Height="70px" CssClass="dragRangeSlider" EnableServerSideRendering="true" IsSelectionRangeEnabled="true" OnValueChanged="rs_level_OnValueChanged" 
           EnableDragRange="true" 
           ItemType="Item"> 
           <Items> 
            <telerik:RadSliderItem Text="L1" Value="1" runat="server"></telerik:RadSliderItem> 
            <telerik:RadSliderItem Text="L2" Value="2" runat="server"></telerik:RadSliderItem> 
           </Items> 
          </telerik:RadSlider> 
         </ItemTemplate> 
         <HeaderStyle Width="490px"></HeaderStyle> 
         <ItemStyle Width="490px"></ItemStyle> 
        </telerik:TreeListTemplateColumn> 
       </Columns> 
      </telerik:RadTreeList> 

OnSelectedIndexChangedバインドradtreelist

protected void rcb_testtype_OnSelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e) 
    { 
     rcb_syllabus_name.Visible = rcb_testtype.SelectedValue != "pt"; 
     rtl_specific_topic.DataSource = FetchTopicDetailsForSyllabus(); 
     rtl_specific_topic.DataBind(); 
    } 

    private DataTable FetchTopicDetailsForSyllabus() 
    { 
     DataTable dtTopocsForTest = null; 
     if (rcb_testtype.SelectedValue == "nt" && rcb_syllabus_name.SelectedValue != "") 
     { 
      obj_BEL_LMS.Flag = "normaltest"; 
      obj_BEL_LMS.Syllabusid = Convert.ToInt32(rcb_syllabus_name.SelectedValue); 
      dtTopocsForTest = obj_BL_LMS.FetchSyllabusDetails(obj_BEL_LMS); 
     } 
     else if (rcb_testtype.SelectedValue == "pt") 
     { 
      obj_BEL_LMS.iFlag = 2; 
      obj_BEL_LMS.iBranchId = Convert.ToInt32(Session["branchid"]); 
      dtTopocsForTest = obj_BL_LMS.FetchTopicDetailsDb(obj_BEL_LMS); 
     } 
     return dtTopocsForTest; 
    } 

の背後にあるコードで

結合した後、それは、親のデータを示しています。 Telerikのドキュメントから

答えて

0

次の場合には、このイベントが発生します:OnLoadの後

  • 右、Telerik RadTreeListは保存されTreeList関連情報については、ビューステートをチェックします。このような情報がない場合(ページが最初に読み込まれるとき)、NeedDataSourceイベントが発生します。また、これは、コントロールのEnableViewStateプロパティがfalseに設定されている場合、treelistは崩壊/拡張ページのロード(初回だけではなく)
  • 後、それぞれの時間を結合することを意味し
  • ページングイベントが
  • を発生Rebindを必要とする他の操作が発生した場合 このイベントを使用する利点は、開発者がデータバインディングの処理時期と方法に関するロジックを処理するコードを記述する必要がないことです。データソースオブジェクトを適切に構築し、それをRadTreeListのDataSourceプロパティに割り当てることは、開発者の責任です。 NeedDataSourceハンドラのコードでは、Telerik RadTreeListのデータソース(オブジェクトのリスト)を準備し、それをグリッドのDataSourceプロパティに割り当てる必要があります。また、TreeListコントロールのためにPropertyKeyNamesとParentDataKeyNamesプロパティを設定する必要があります。

注:私はあなたがあなたの投稿を編集示唆して含まNeedDataSourceハンドラ内からのDataBind()メソッドを呼び出していないか、高度なデータ・バインディング

で単純なデータ・バインディングモードを混在んあなたのコード。

関連する問題