首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式与NeedDatasource绑定?

以编程方式与NeedDatasource绑定?
EN

Stack Overflow用户
提问于 2017-06-14 15:35:03
回答 1查看 1.1K关注 0票数 0

第一期,我的页面上有两个控件( radcombox和Treelist控件)。在radcombobox的SelectedIndexChanged上,我正在填充来自database.Now的数据,我想在SelectedIndexChanged上触发NeedDatasource事件。我怎么能这么做?

第二期,

由于我面临一些需要数据源的问题,我已经使用radtreelist.After绑定的databind方法手动绑定,它最初只显示父节点。

单击PageSize组合体RadTreelist后,它会加载相应的子nodes.Why,这里会发生这种情况吗?

代码语言:javascript
复制
  <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绑定雷达

在代码后面

代码语言:javascript
复制
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;
    }

绑定之后,它只显示父数据。

EN

回答 1

Stack Overflow用户

发布于 2017-06-15 05:47:15

来自Telerik文件:

此事件在下列情况下触发:

  • 在OnLoad之后,Telerik RadTreeList检查viewstate中存储的与TreeList相关的信息.如果缺少这样的信息(当页面第一次加载时),则会触发NeedDataSource事件。这也意味着,如果控件的EnableViewState属性设置为false,treelist将在每次加载页面时绑定(不仅仅是第一次)
  • 膨胀/塌陷后
  • 发生分页事件时
  • 当需要重新绑定的其他操作发生时,使用此事件的优点是开发人员不需要编写任何代码来处理何时以及如何处理数据绑定的逻辑。正确地构造数据源对象并将其分配给RadTreeList的DataSource属性仍然是开发人员的责任。在NeedDataSource处理程序的代码中,您应该为Telerik RadTreeList准备数据源(对象列表),并将其分配给网格的DataSource属性。此外,您还应该为DataKeyNames控件设置ParentDataKeyNames和属性。

注意:您不应该从NeedDataSource处理程序内部调用DataBind()方法,也不应该将简单的数据绑定模式与高级数据绑定混合使用。

我建议你编辑你的文章并包括你的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44549073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档