如何从两个不同的数据库表中填充网格视图,但记录在网格中不重复
本文关键字:网格 视图 填充 记录 数据库 两个 | 更新日期: 2023-09-27 18:34:50
我有一个用户权限表单,我从表中加载网格Administrator
然后我将具有Checkbox
属性的GridView
中的数据插入数据库的新User
表中,它工作得很好。但是在下一个条件下,我想从两个表中加载网格,第一个表User
表中数据显示Checkbox
选中的 true 属性,第二个Administrator
表,其中数据显示复选框选中的 false 属性。
如果你理解我的问题,那么请帮助我。我的代码是:
protected void CmdUserRights_Click(object sender, ImageClickEventArgs e)
{
StrSql = "Select Name from Sys.tables";
StrSql = StrSql + " Where Name='" + "User_" + CboUserId.Text + "'";
DataSet rs = (DataSet)MethodClass.ConnectionToQuery(StrSql);
if (rs.Tables[0].Rows.Count <= 0)
{
StrSql = "Select * from User_Administrator";
StrSql = StrSql + " Order by serial_no asc";
DataSet rs2 = (DataSet)MethodClass.ConnectionToQuery(StrSql);
GvUserPrivilege.DataSource = rs2.Tables[0];
GvUserPrivilege.DataBind();
}
else
{
StrSql = "Select * from " + "[User_" + CboUserId.Text + "]";
StrSql = StrSql + " Order By serial_no asc ";
DataSet rs4 = (DataSet)MethodClass.ConnectionToQuery(StrSql);
if (rs4.Tables[0].Rows.Count > 0)
{
GvUserPrivilege.DataSource = rs4.Tables[0];
GvUserPrivilege.DataBind();
foreach (GridViewRow rows in GvUserPrivilege.Rows)
{
CheckBox ChkBoxRows = (CheckBox)rows.FindControl("chk");
ChkBoxRows.Checked = true;
}
}
else
{
}
}
}
同意 Alex Bell 的观点。
尝试像这样连接表:
SELECT
Administrator.*,
(User.somefield IS NOT NULL) checked
FROM Administrator
LEFT JOIN User
ON [join condition here]
如果用户表中存在某些记录,则表达式(User.somefield IS NOT NULL(将为真(您需要为此使用一些NOT NULL列(。否则,它将是错误的。