0

現在ログインしている SharePoint ユーザーのデータベースからデータを取得し、詳細ビューのコントロールに表示したいと考えています。しかし、最善の方法でそれを達成する方法が本当にわかりません。これは私が試したコードですが、null.

    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;                    
            }
        }            
    }

詳細ビューを次のようにデータバインドしたい場合:

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

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

どうすればいいのかよくわかりません。私を助けてくれる人はいますか?

4

1 に答える 1

0

a) DataSource は、データを保持する変数である必要があります。この場合、それは theEmpl になります

b) これをデバッガーで実行して、strUserName が期待どおりかどうかを確認します。通常、LoginName フィールドは「DOMAIN\UserName」のようにドメインとユーザー名を返すため、Domain\ を指定せずにデータベースに UserName の部分のみを保存している場合、null (デフォルトでは null) 値が返される可能性があります。

c) Databinding の場合、LINQ クエリを p.FieldNameToDatabind に変更するか、実際にフィールドを表示できるように asp マークアップで Databind コードを記述する方法を知ってください。

于 2013-04-13T04:22:33.197 に答える