我正在使用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
非常简单,它会检查它的经理或员工是否返回相关数据。该程序已经过测试,因为它已经过测试。
我似乎无法弄清楚如何为经理和员工展示网格。我需要两种不同的功能吗?
提前感谢您的所有帮助和支持
答案 0 :(得分:1)
使用您当前的实现,两个网格将绑定相同的数据,因此对于两个不同的结果(Employee&amp; Manager),您可以: -
写两个SP(每个SP单独获取员工和经理记录)并单独调用它们。
( 首选 )从现有的SP返回两个结果集(一个用于员工,一个用于Manager),您还可以设置{{ 1}}检查登录用户是管理员还是员工。然后在同一个方法中,您可以返回一个自定义类型,而不是返回output parameter
,该类型将包含员工列表以及经理列表,如下所示: -
List<MyClass>
最后在您的方法中,使用NextResult方法获取两个结果,如下所示: -
public class EmployeeAndManager
{
public List<Employee> employees { get; set; }
public List<Employee> manager { get; set; }
}