2013-04-12 162 views
0

我想找回登錄SharePoint用戶對當前的數據庫中的數據,並顯示在一個DetailsView控件。但我真的不知道如何以最好的方式實現這一目標。這是我試過的代碼,但它顯示null檢索數據庫中的數據,並顯示在DetailsView控件

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!IsPostBack) 
     { 
      GetEmployeeCv(); 
     } 
    } 

    private void GetEmployeeCv() 
    { 
     using (var db = new KnowItCvdbEntities()) 
     { 
      SPWeb theSite = SPControl.GetContextWeb(Context); 
      SPUser theUser = theSite.CurrentUser; 
      string strUserName = theUser.LoginName; 

      var theEmpl =(from p in db.EMPLOYEES 
          where p.username == strUserName 
         select p).FirstOrDefault(); 

      if(theEmpl != null) 
      { 
       Image empImg = (Image)DetailsViewShowFullCv.FindControl("imageProfPic"); 
       empImg.ImageUrl = theEmpl.image;      
      } 
     }    
    } 

如果我想我的數據綁定喜歡的DetailsView:

   Image empImg = (Image)DetailsViewShowFullCv.FindControl("imageProfPic"); 
       empImg.ImageUrl = theEmpl.image;      

       DetailsViewShowFullCv.DataSource = ??; 
       DetailsViewShowFullCv.DataBind(); 

我真的不知道該怎麼做。任何人都可以幫助我?

+0

我想知道哪些其他變量爲空。 strUserName是否爲空? – maaizle

+0

看看[這篇文章](http://www.learn-asp.net/asptutorials/detailsview.aspx),它有我想要輸入的所有視覺線索作爲答案。我刪除了我的答案。 –

回答

0

a)DataSource應該是保存數據的變量。在這種情況下,將theEmpl

B)通過調試運行此檢查,如果strUserName中是你所期望的。該LoginName將現場通常會返回,如「域\用戶名」域和用戶名,以便有一個機會,它會返回一個空(默認爲null)值,如果你只是存儲在數據庫中的用戶名部分不帶域\

c)對於數據綁定,要麼將您的LINQ查詢更改爲p.FieldNameToDatabind,要麼知道如何在asp標記中編寫數據綁定代碼,以便實際顯示該字段。

相關問題