根据数据库中的数据更改gridview

时间:2015-04-02 08:44:26

标签: c# asp.net gridview

我正在使用ASP.NET和C#开发的网站上工作。我有一个页面,目前包含两个Gridview。第一个网格用于员工,第二个网格用于经理。我将数据分配给谁登录。如果经理登录,他/她应该看到两个网格,如果员工登录他/她应该只看到一个网格。我已经设法获得了两个网格,但似乎无法弄清楚如何相应地显示它们。我的代码如下;

public List<MyClass> GetData()
{
    string userName = HttpContext.Current.User.Identity.Name;

    List<MyClass> myList = new List<MyClass>();

    using(SqlConnection connection = new SqlConnection(Common.ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand("MyProcedure", connection))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@UserName", SqlDbType.VarChar).Value = userName;
            connection.Open();
            using(SqlDataReader reader = cmd.ExecuteReader())
            {
                while(reader.Read())
                {
                    MyClass mc = new MyClass();

                    mc.Id = reader["Id"].ToString();
                    mc.Name = reader["Name"].ToString();
                    myList.Add(mc);
                }
            }
        }
    }
    return myList;
}

要绑定页面上的数据我有网格

MyClass list = new MyClass();

//Employee Grid  
GridView1.DataSource = list.GetData();
GridView1.DataBind();   

//Manager Grid
GridView2.DataSource = list.GetData();
GridView2.DataBind();   

我的PROCEDURE非常简单,它会检查它的经理或员工是否返回相关数据。该程序已经过测试,因为它已经过测试。

我似乎无法弄清楚如何为经理和员工展示网格。我需要两种不同的功能吗?

提前感谢您的所有帮助和支持

1 个答案:

答案 0 :(得分:1)

使用您当前的实现,两个网格将绑定相同的数据,因此对于两个不同的结果(Employee&amp; Manager),您可以: -

  1. 写两个SP(每个SP单独获取员工和经理记录)并单独调用它们。

  2. 首选 )从现有的SP返回两个结果集(一个用于员工,一个用于Manager),您还可以设置{{ 1}}检查登录用户是管理员还是员工。然后在同一个方法中,您可以返回一个自定义类型,而不是返回output parameter,该类型将包含员工列表以及经理列表,如下所示: -

    List<MyClass>
  3. 最后在您的方法中,使用NextResult方法获取两个结果,如下所示: -

    public class EmployeeAndManager
    {
        public List<Employee> employees { get; set; }
        public List<Employee> manager { get; set; }
    }