2014-12-05 60 views
0

我想從SqlDataSource的返回中設置一些會話變量。我能夠將值設置爲標籤/文本框/隱藏字段,但我似乎無法設置會話變量。從SqlDataSource設置會話變量

我正在使用page_load函數來嘗試設置它們。

protected void Page_Load(object sender, EventArgs e) 
{   
     this.Session["UserName"] = User.Identity.Name; 
     this.Session["EmplID"] = Eval("EmplID"); 
} 

我有一個SqlDataSource

<asp:SqlDataSource ID="SQLGetEmplID" runat="server" 
      ConnectionString="<%$ ConnectionStrings:MAFapp %>" 
      SelectCommand="SELECT DISTINCT EmplID, Status FROM Employees WHERE (intLogin = @UserName) AND (Dept = N'Eng' OR Dept = N'IS') AND (Status = N'Active')"> 
    <SelectParameters> 
     <asp:SessionParameter Name="UserName" SessionField="UserName" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
+0

爲什麼會有人給了反對票的方法嗎?這是一個壞問題嗎?如果是這樣,那爲什麼? – Beengie 2014-12-05 22:11:26

+0

快速問題..你有沒有穿過代碼..?你在哪裏返回從User.Identity.Name ..中選擇的EmplID的行?我很好奇你是如何解析User.Identity.Name你可以顯示所有相關的代碼也是什麼名稱回來作爲..是例如'DomainName \ Beebgie'是如此,那麼你需要拆分User.Identity .Name並返回數組中的值[1]您是否使用'PricnipalContext' – MethodMan 2014-12-05 22:15:33

+0

User.Identity.Name正在返回沒有域的登錄名。是的,有一個標籤字段從SQLGetEmplID訪問EmplID,但我期待刪除該字段,因爲用戶不需要擁有他/她的ID。我正試圖解決交給我的一團糟。 – Beengie 2014-12-05 22:18:50

回答

0

你在做什麼,如果你User.Identity.Name

string fullUserName = null; 
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain)) 
{ 
    using (UserPrincipal user = UserPrincipal.FindByIdentity(pc,User.Identity.Name)) 
    { 
     if (user != null) 
     { 
      fullUserName = user.DisplayName;//this can be what ever you like 
     } 
    } 
} 
+0

我添加了代碼,但是得到了一個'PrincipalContext'的錯誤,我做了一些研究,看到我需要包含程序集引用'System.DirectoryServices.AccountManagement'。我添加了它,但是我仍然收到錯誤'CS0246:無法找到類型或名稱空間名稱'PrincipalContext'(您是否缺少using指令或程序集引用?)' – Beengie 2014-12-05 22:42:25

+0

這是訪問Windows登錄還是這仍然訪問內部網登錄? – Beengie 2014-12-05 22:45:52

+0

如果這兩個窗口和互聯網的作用與互聯網的區別是你會得到像'域名\用戶名'的東西,那麼你將需要使用split函數獲取第二個元素的字符串[]位置,所以在'C#例如,將someStringArray [1] ..你有沒有嘗試過一個小的'ConsoleApp'例如你會明白我的意思..讓我知道是否有幫助 – MethodMan 2014-12-08 15:23:51