C# Ado.Net按登录用户填充网格

C# Ado.Net按登录用户填充网格,c#,asp.net,gridview,C#,Asp.net,Gridview,我需要根据当前登录的用户使用记录填充gridview。我的存储过程需要一个参数,即用户ID。我希望该参数是当前登录的用户,但我不知道如何实现这一点 获取记录的存储过程: @cnt_ID int AS BEGIN SELECT TOP (100) PERCENT dbo.vtCursusPlanning.cur_CursusID AS CursusID, dbo.vtCursusPlanning.cur_Omschrijving AS Omschrijving, CONVERT(var

我需要根据当前登录的用户使用记录填充gridview。我的存储过程需要一个参数,即用户ID。我希望该参数是当前登录的用户,但我不知道如何实现这一点

获取记录的存储过程:

@cnt_ID int 

AS
BEGIN
SELECT     TOP (100) PERCENT dbo.vtCursusPlanning.cur_CursusID AS CursusID, dbo.vtCursusPlanning.cur_Omschrijving AS Omschrijving, CONVERT(varchar, 
                      dbo.vtData.dat_Datum, 100) AS Datum, CONVERT(varchar, dbo.vtData.dat_Start, 100) AS DStart, CONVERT(varchar, dbo.vtData.dat_Stop, 100) AS DStop, 
                      dbo.vtContactPersonen.cnt_Initialen AS Username
FROM         dbo.vtData INNER JOIN
                      dbo.vtCursusPlanning ON dbo.vtData.cur_FK = dbo.vtCursusPlanning.cur_CursusID INNER JOIN
                      dbo.vtContactPersonen ON dbo.vtCursusPlanning.cnt_FK = dbo.vtContactPersonen.cnt_ID INNER JOIN
                      dbo.vtCursusCursisten ON dbo.vtData.cur_FK = dbo.vtCursusCursisten.cst_fk
WHERE     (dbo.vtContactPersonen.cnt_ID = @cnt_ID) AND (NOT (dbo.vtCursusCursisten.cst_fk IS NULL)) AND (NOT (dbo.vtCursusPlanning.cur_Project IS NULL))
ORDER BY DStart
END
我试图用我的C代码填充gridview

试试这个


这是否意味着您无法获取用户ID?这是你的问题吗?是的!我无法检索任何记录的原因是因为它说cnt_ID从未被填充。但是,我不能使用字符串UserId=Membership.GetUser(@Cnt_ID).ProviderUserKey.ToString()之类的东西;因为它需要dbo.asp.net默认数据库,所以它实际上会获取当前登录的用户名。但是我用cnt_ID对存储过程进行排序,cnt_ID是保存所有用户的表的pirmary键。我得到的用户名是一个nvarchar,cnt_ID是一个int。如何正确转换它,使它仍然能够抓取记录?如果您的数据表上有两个不同的字段,分别是ID(int)和UserId(nvarchar),那么您有两个选项来修复此问题:1。在存储过程中,首先根据给定的UserId获取Id(int),然后执行剩余的2。只要将
dbo.vtContactPersonen.cnt_ID
更改为
dbo.vtContactPersonen.cnt_USERID
,如果您的数据库表中有这样一个字段
USERID
,当然可以将
@cnt_ID int
更改为
@cnt_USERID nvarchar(50)
           protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection conn;
        SqlCommand comm;
        SqlDataReader reader;
        GridView1.DataKeyNames = new string[] { "@cnt_ID" };
        string connectionString = ConfigurationManager.ConnectionStrings["KRIS-Planning"].ConnectionString;
        conn = new SqlConnection(connectionString);
        comm = new SqlCommand("spOffice2010Evaluaties", conn);
        comm.CommandType = CommandType.StoredProcedure;
        comm.Parameters.Add("@cnt_ID", SqlDbType.Int);
        comm.Parameters["@cnt_ID"].Value = UserID;

        try
        {
            conn.Open();
            reader = comm.ExecuteReader();
            GridView1.DataSource = reader;
            GridView1.DataBind();
            reader.Close();
        }
        catch (Exception ex)
        {
            dbErrorLabel.Text = Convert.ToString(ex);
        }

        finally
        {
            conn.Close();
        }
    }
}
 string UserId = HttpContext.Current.User.Identity.Name;