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服务器控制台上引发了一个对话框,显示相同的消息。设置了中止/重试/忽略按钮,因此有效地杀死了所有内容。现在这很不礼貌!
解决方案是在使用控件之前对字段值进行连续编号。