AJAX.NET重新排序列表控件-"它不是数据源,也不实现IList。"

时间:2020-03-06 14:40:42  来源:igfitidea点击:

尝试重新排序ReorderList控件中的项目时,我一直收到此错误。

"重新排序失败,请参阅下面的详细信息。

无法访问数据源。它不是数据源,也不实现IList。"

我现在将数据源设置为DataTable,并且当前正尝试使用ArrayList数据源,但是由于此文章在Internet上的其他地方而受到劝阻。该控件存在于更新面板中,但没有其他事件被预订。 OnItemReorder事件是否应该有一些特别之处?只是对其工作方式感到困惑。

我的问题是,有人在这个问题上有直接的经验吗?

解决方案

过去,我已经成功地使用了它,没有太多问题(绑定到列表)。我们能张贴一些前端和后台代码片段吗?

<cc1:ReorderList id="ReorderList1" runat="server" CssClass="Sortables" Width="400" >
                            <ItemTemplate>
                            <div class="sortablelineitem">
                            <a href="#" class="albmCvr" id="song13">
                            <img src="/images/plalbumcvr.jpg" alt="Name of Album" class="cvrAlbum" width="10"
                                height="10" />
                            Song 1 <span>by</span> Artist 1 </a>
                             <asp:ImageButton ID="ImageButton13" runat="server" ImageUrl="/images/btn_play_icon.gif"
                            ToolTip="Play Clip" CssClass="playClip" />
                             </div>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <h1>WHOA THE ITEM IS BEING DRAGGED!!</h1>
                            </EditItemTemplate>
                            <ReorderTemplate>
                            <div style="width:400px; height:20px; border:dashed 2px #CCC;"></div>
                            </ReorderTemplate>
                            <DragHandleTemplate>
                            <div style="height:15px; width:15px; background-color:Black;"></div>
                            </DragHandleTemplate>
                            <EmptyListTemplate>
                            There are no items in this playlist yet...
                            </EmptyListTemplate>
                        </cc1:ReorderList>

                        </ContentTemplate>
                            </asp:UpdatePanel>

是我的前端,而在后端,我只是获取一个数据表对象并将其绑定到Non Postback的OnLoad ...

ReorderList1.DataSource = ds.Tables[1];
ReorderList1.DataBind();

重新排序项目后,是否需要再次设置数据源?

我想到了。我将DataTable转换为ArrayList,然后绑定到控件。谢谢大家的阅读!

当我尝试排序的表没有分配给DataKeyField的初始值时,我发现了同样的错误。这使我在测试环境中将头发拔掉了,但是当我将其推向现场时却没有。我还要注意,它在我的Web服务器控制台上引发了一个对话框,显示相同的消息。设置了中止/重试/忽略按钮,因此有效地杀死了所有内容。现在这很不礼貌!

解决方案是在使用控件之前对字段值进行连续编号。