从数据源在telerik gridview下填充asp下拉列表

时间:2018-09-20 18:43:52

标签: gridview telerik dropdown findcontrol

我一直试图在Telerik网格视图的列中添加一个下拉控件。 下面是代码片段。当我在下拉菜单中使用“查找控件”时,它返回null且未绑定数据。

ASP

<telerik:GridTemplateColumn AllowFiltering="False" ShowFilterIcon="False">
                            <HeaderStyle HorizontalAlign="Center" />
                            <HeaderTemplate>
                               Change Sort Order
                            </HeaderTemplate>
                            <ItemStyle HorizontalAlign="Center" Width="5%"/>
                            <ItemTemplate>
                                <asp:DropDownList ID="myDropDown" DataTextField="TextFieldValue" DataValueField="ValueFieldValue" runat="server"/>
                            </ItemTemplate>
                        </telerik:GridTemplateColumn>

C#代码

protected void gdvFMclevel1_ItemDataBound(object sender, GridItemEventArgs e)
        {
                GridItem item = (GridItem)e.Item;
                DropDownList list=(DropDownList)item.FindControl("myDropDown");
                Controller c = new Controller();
                DataSet ds = new DataSet();
                ds = c.GetSortList();
                if (ds.Tables[0].Rows.Count > 0)
                {
                    list.DataSource = ds.Tables[0];
                    list.DataTextField = "Order";
                    list.DataValueField = "SortOrder";
                    list.DataBind();
                }
               }

请让我知道如何获取下拉列表中的数据。我在此上遇到对象引用异常。

1 个答案:

答案 0 :(得分:0)

将DataSourceID =“ dataSource”添加到下拉列表中。 在页面上声明一个ObjectDataSource(ODS)。将ODS链接到返回数据集的函数。 该功能应该是公开的。

public DataSet dataSource()
{
    DataSet ds = new DataSet();
    ds = c.GetSortList();

    return ds;
}

<telerik:GridTemplateColumn AllowFiltering="False" ShowFilterIcon="False">
    <HeaderStyle HorizontalAlign="Center" />
    <HeaderTemplate>
       Change Sort Order
    </HeaderTemplate>
    <ItemStyle HorizontalAlign="Center" Width="5%"/>
    <ItemTemplate>
        <asp:DropDownList ID="myDropDown" DataSourceID="odsDataSource" 
        DataTextField="Order" 
        DataValueField="SortOrder" 
        runat="server"/>
    </ItemTemplate>
</telerik:GridTemplateColumn>

<asp:ObjectDataSource runat="server" ID="odsDataSource"
        SelectMethod="dataSource"
        TypeName="yournamespace.yourclassName"></asp:ObjectDataSource>