C# 您能解释一下吗?您在服务器上创建XML,并将其作为XML文档传递到数据库(EXEC sp_XML_PreparedDocument之前的所有内容)。然后,数据库知道如何将该文档视为一个表,您可以使用一个简单的存储过程来执行插入/更新/删除操作。所以你只有一

C# 您能解释一下吗?您在服务器上创建XML,并将其作为XML文档传递到数据库(EXEC sp_XML_PreparedDocument之前的所有内容)。然后,数据库知道如何将该文档视为一个表,您可以使用一个简单的存储过程来执行插入/更新/删除操作。所以你只有一,c#,asp.net,sql-server,repeater,C#,Asp.net,Sql Server,Repeater,您能解释一下吗?您在服务器上创建XML,并将其作为XML文档传递到数据库(EXEC sp_XML_PreparedDocument之前的所有内容)。然后,数据库知道如何将该文档视为一个表,您可以使用一个简单的存储过程来执行插入/更新/删除操作。所以你只有一个数据库呼叫。谢谢。我一直在等待最简单的答复。当我没有得到任何答复时,我对这种方法做了一些修改,最终使它发挥了作用。再次感谢!嗨,我在找一件和这一模一样的东西。我确实想到了这一点。但问题是,如何让复选框传递参数?一旦选中更改,将不会绑定中继器,


您能解释一下吗?您在服务器上创建XML,并将其作为XML文档传递到数据库(EXEC sp_XML_PreparedDocument之前的所有内容)。然后,数据库知道如何将该文档视为一个表,您可以使用一个简单的存储过程来执行插入/更新/删除操作。所以你只有一个数据库呼叫。谢谢。我一直在等待最简单的答复。当我没有得到任何答复时,我对这种方法做了一些修改,最终使它发挥了作用。再次感谢!嗨,我在找一件和这一模一样的东西。我确实想到了这一点。但问题是,如何让复选框传递参数?一旦选中更改,将不会绑定中继器,我无法获取行详细信息。此外,复选框没有CommandArgument。。我该怎么做呢?(我也熟悉ajax和javascript)抱歉@iamsearchy,我可能需要一段时间才能原型化一些东西。我已经离开ASP.NET,所以我没有立即的答复。
Username        HasIpod        HasGymMembership        HasCar
``````````````````````````````````````````````````````````````
User1            chcekbox        checkbox               checkbox
User2            chcekbox        checkbox               checkbox
User3            chcekbox        checkbox               checkbox
User4            chcekbox        checkbox               checkbox
user1id,1,0,1;user1id,0,1,1
delete from HasIPodTable
where UserID IN (firstUncheckedUserID, secondUncheckedUserID, ...)

insert into HasIPodTable
select firstCheckedUserID
UNION
select secondCheckedUserID
...
DECLARE @DocHandle int
DECLARE @XmlDocument nvarchar(1000)
SET @XmlDocument = N'<ROOT>
<User Username="user1" HasIpod="1" HasGymMembership="1" HasCar="0" />
<User Username="user2" HasIpod="1" HasGymMembership="0" HasCar="1" />
<User Username="user3" HasIpod="0" HasGymMembership="1" HasCar="0" />
<User Username="user4" HasIpod="0" HasGymMembership="0" HasCar="1" />
</ROOT>'

EXEC sp_xml_preparedocument @DocHandle OUTPUT, @XmlDocument

SELECT *
FROM OPENXML (@DocHandle, '/ROOT/User',1)
      WITH (Username  varchar(100),
            HasIpod bit,
            HasGymMembership bit,
            HasCar bit)

/* ... update your tables here ... */

EXEC sp_xml_removedocument @DocHandle
DECLARE @DocHandle int
DECLARE @XmlDocument nvarchar(1000)
SET @XmlDocument = N'<root>
    <added>
        <ipod userID="1" />
        <ipod userID="2" />
        <gym userID="1" />
        <gym userID="3" />
        <car userID="2" />
        <car userID="4" />
    </added>
    <removed>
        <ipod userID="3" />
        <ipod userID="5" />
        <gym userID="4" />
        <gym userID="5" />
        <car userID="1" />
        <car userID="3" />
    </removed>
</root>'

EXEC sp_xml_preparedocument @DocHandle OUTPUT, @XmlDocument

insert into HasIPodTable SELECT * FROM OPENXML (@DocHandle, '/root/added/ipod',1) WITH (userID  int)
delete HasIPodTable where userID in (SELECT * FROM OPENXML (@DocHandle, '/root/removed/ipod',1) WITH (userID  int))

/* and the same for the others ... */

EXEC sp_xml_removedocument @DocHandle