如何从两个不同的数据库表中填充网格视图,但记录在网格中不重复

本文关键字:网格 视图 填充 记录 数据库 两个 | 更新日期: 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列(。否则,它将是错误的。