Asp.net 无法按排序顺序保存列表框项目
在我的.NETWebForms页面中,我有一个列表框和一些jQuery,允许我对项目进行排序。我选择几个项目,然后循环它们以保存到我的数据库中。我想保存项目的排序顺序,但是,我无法使其工作。我的代码隐藏显示为:Asp.net 无法按排序顺序保存列表框项目,asp.net,sorting,webforms,listbox,Asp.net,Sorting,Webforms,Listbox,在我的.NETWebForms页面中,我有一个列表框和一些jQuery,允许我对项目进行排序。我选择几个项目,然后循环它们以保存到我的数据库中。我想保存项目的排序顺序,但是,我无法使其工作。我的代码隐藏显示为: protected void session_DetailsView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) { panel_SqlDataSource.Delete();
protected void session_DetailsView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
panel_SqlDataSource.Delete();
ListBox panel_ListBox = session_DetailsView.FindControl("panel_ListBox") as ListBox;
int so = 0;
for (int i=0; i < panel_ListBox.Items.Count; i++)
{
if (panel_ListBox.Items[i].Selected == true)
{
so++;
panel_SqlDataSource.InsertParameters["presenterID"].DefaultValue = panel_ListBox.Items[i].Value;
panel_SqlDataSource.InsertParameters["sortOrder"].DefaultValue = so.ToString();
panel_SqlDataSource.Insert();
}
}
}
受保护的无效会话\u DetailsView\u项目更新(对象发送方,DetailsViewUpdateEventArgs e)
{
panel_SqlDataSource.Delete();
ListBox panel_ListBox=会话_DetailsView.FindControl(“panel_ListBox”)作为ListBox;
int so=0;
对于(int i=0;i
是的,因此在客户端更改订单可能不会影响订单在服务器上的顺序,因为这可能会在viewstate中的某个位置定义。您的控件将恢复原来的显示状态。您需要以某种方式跟踪事物的顺序—将其从表单变量或其他任何形式中提取出来。ASP.Net不知道列表框中的项目在客户端已被更改。您可能正在使用jQuery.sortable方法对列表框项进行排序。您需要使用“serialize”选项调用sortable,并将值保存到隐藏字段中。发布表单时,读取该隐藏字段的值,并将新订单保存在数据库中
因此,对于示例,如果ID为1、2、3的对象具有新的顺序2、3、1,则创建如下更新/插入方法:
update tbl set sortOrder = 1 where presenterId = 2
update tbl set sortOrder = 2 where presenterId = 3
update tbl set sortOrder = 3 where presenterId = 1
暂时不要考虑数据库,您应该只跟踪输出,以确定您期望发生的事情是否正在发生。然后担心数据库。还要粘贴jQuery代码。。。