.net批量中GridView批量修改数据的问题
发布网友
发布时间:2022-05-05 01:58
我来回答
共3个回答
热心网友
时间:2022-06-28 10:55
我也不太清楚你的问题是什么,有点不解,也许我的不解就是你的问题所在。我的理解是:你要实现的功能应该是在gridview中选择某些行(利用CheckBox控件),取出选择的行UserId字段,然后已UserId作为参数之一更改数据库中对应UserId的角色。
然而问题就在于:你使用的参数 userIdList是一连串的UserId和逗号组成的字符串,而你在使用userIdList作为参数时是使用的userIdList.ToString()。我想你的逻辑是对的,但这里不应该使用userIdList.ToString()作为你调用数据访问层的参数,或者更改数据访问层函数如下:
public int ModifyRoleInfo(string admin,string role,string userIdList)
{
int rows=0;
string sql = "UPDATE tb_BbsUser SET [Role]=@Role,ModifiedBy=@ModifiedBy,ModifiedTime=@ModifiedTime WHERE UserId IN(@UserId)";
string[] userList=userIdList.split(',');
for(int i=0;i<userList.Length-1;i++)
{
SqlParameter[] para = new SqlParameter[]
{
new SqlParameter("@Role",role.ToString()),
new SqlParameter("@ModifiedBy",admin.ToString()),
new SqlParameter("@ModifiedTime",System.DateTime.Now),
new SqlParameter("@UserId",userList[i])
};
if (dh.ExecCommandReturnInt(sql.ToString(),para))
{
row1++;
}
}
}
我的理解不知是否正确,希望对你有用。
对问题补充的回答:
你的程序返回的值就应该是0啊。
正如我前面所说的,你的参数:userIdList有问题啊,比方我的数据中userID有ID1和ID2,而你的userIdList则是:“ID1,ID2”,数据库中肯定没有“ID1,ID2”这个ID号啦,所以返回值是0咯。
你在执行SQL语句前把要执行的SQL语句取出来检查一下就知道是不是你的SQL的问题啦。
热心网友
时间:2022-06-28 10:56
问题是什么 您还没有说啊 代码倒是很详细了
热心网友
时间:2022-06-28 10:56
楼上应该理解错了...
数据库表的信息最好也给一下,看了好久,我分析可能是role的数据类型不匹配,是不是数据库中role是int型的而SQLCOMMAND中写的是STRING所以出错了?