I sent a comma separated string of ids of users by ajax post request to action method.
public ActionResult EnableSelectedUser(string userIds)
{
List<int> users = new List<int>();
I converted string of comma separated ids to list.
var userList = userIds.TrimEnd(',').Split(',').ToList();
foreach (var u in userList)
{
var data = new NotificationUsers()
{
UserId = Int32.Parse(u)
};
users.Add(data);
}
Converted list to xml
string xml = UBConvert.ListToXML(users, "DS", "DT");
Method that convert list to xml
public static string ListToXML(object list, string dataSetName, string dataTableName,
StringCollection fieldNames)
{
if (list == null)
{
throw new ArgumentNullException("list");
}
var ds = new DataSet { Locale = CultureInfo.InvariantCulture };
ds.Tables.Add(GenericListToDataTable(list, fieldNames));
ds.DataSetName = dataSetName;
ds.Tables[0].TableName = dataTableName;
return ds.GetXml();
}
Pass xml as parameter to Store procedure
Parameter[] lstParams = new Parameter[]
{
new Parameter("@CurrentUserId", currentUserId),
new Parameter("@Xml", xml)
};
return UBConvert.ToInt32(DataBaseHelper.ExecuteScalar("Admin_EnableBulkUser", lstParams));
Store Procedure that accept xml as parameter
CREATE PROCEDURE [dbo].[Admin_EnableBulkUser]
(
@CurrentUserId INT = 0,
@Xml xml
)
AS
BEGIN
DECLARE @Result INT = -1
DECLARE @Users table (UserId int, RowId int)
INSERT INTO @Users(UserId)
Select
T.Item.value('UserId[1]','int')
from @Xml.nodes('//DS/DT') AS T(Item)
BEGIN TRY
BEGIN TRAN
UPDATE dbo.[User]
SET UserStatus = 1,
DeletedBy = @CurrentUserId,
DeletedOn = GETUTCDATE(),
SyncStatus = 0
FROM dbo.[User] u INNER JOIN @Users us on u.UserId = us.UserId
set @Result =1
select @Result;
COMMIT
SELECT @Result
END TRY
BEGIN CATCH
ROLLBACK
Select @Result =0;
END CATCH
END