Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无法按排序顺序保存列表框项目_Asp.net_Sorting_Webforms_Listbox - Fatal编程技术网

Asp.net 无法按排序顺序保存列表框项目

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();

在我的.NETWebForms页面中,我有一个列表框和一些jQuery,允许我对项目进行排序。我选择几个项目,然后循环它们以保存到我的数据库中。我想保存项目的排序顺序,但是,我无法使其工作。我的代码隐藏显示为:

    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代码。。。