加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用C#将List Item列绑定到sharepoint中的下拉列表

发布时间:2020-12-15 21:39:19 所属栏目:百科 来源:网络整理
导读:我有两个名为“课程”,“教师”的名单. “课程”列表包含以下列. CourseName Duration ---------------------- Sharepoint 60days MSBI 45days .Net 90days Java 50days 教师列表包含以下列 Instructor Course --------------------- John Sharepoint Mike M
我有两个名为“课程”,“教师”的名单. “课程”列表包含以下列.

CourseName   Duration   
----------------------
 Sharepoint   60days 
  MSBI        45days 
  .Net        90days 
  Java        50days

教师列表包含以下列

Instructor   Course   
---------------------
  John       Sharepoint 
  Mike       MSBI 
  Bob        Java

我想在下拉列表中添加“CourseName”列,该列表应该在webpart中实现.
当我们从该下拉列表中选择任何课程时,我们应该在标签中显示教师的姓名.
最初,我尝试向webpart添加一个下拉列表,显示带有以下代码的CourseName列.但我没能创造.

DropDownList drpList;
        protected override void CreateChildControls()
        {
            drpList = new DropDownList();
            SPSite site = SPContext.Current.Site;
            SPWeb web = site.RootWeb;

            SPList list1 = web.Lists["Courses"];
            var listitems = list1.Fields["Course Name"];
            drpList.DataSource = listitems;
            drpList.DataTextField = "Course Name";
            drpList.DataValueField = "Course Name";
            drpList.DataBind();
            Controls.Add(drpList);
        }

任何人都可以建议我做正确的方法!!

新的实施.
我尝试使用以下代码

DropDownList drpList;
        protected override void CreateChildControls()
        {
            drpList = new DropDownList();
            SPSite site = SPContext.Current.Site;
            SPWeb web = site.RootWeb;
            ArrayList myarr = new ArrayList();
            myarr.Add(1);
            myarr.Add(2);
            SPSiteDataQuery dataquery = new SPSiteDataQuery();
            dataquery.Lists = string.Format("<Lists><List ID={0} /></Lists>",web.Lists["Courses"].ID);
            dataquery.ViewFields = "<FieldRef Name="Course Name"/>";
            DataTable dt = web.GetSiteData(dataquery);
            drpList.DataTextField = "Course Name";
            drpList.DataValueField = "Course Name";
            drpList.DataSource = dt;
            drpList.DataBind();
            Controls.Add(drpList);
        }

下拉列表正在出现,但没有数据.我认为CAML查询中存在错误.请任何人纠正我!

解决方法

Lukasz M所指的帖子是我自己写的.

首先,您需要有两个单独的列表吗?您是否只有一个名为Courses的列表,其中包含以下列:* CourseName,Duration,Instructor *?******然后您可以应用基本上执行以下操作的CAML查询:如果CourseName =“SharePoint”,然后从讲师列中显示值John?如果你按照我的描述设置了这个列表(一个列表中的所有3列),那么代码将如下所示(置于Page_Load事件中):

SPListItemCollection itemCol = null;
    SPSite site = new SPSite("http://yoursharepointsite");
    SPWeb web = site.OpenWeb();
    SPList list = web.Lists["Courses"]; //Name of your List with Courses
    SPQuery qryCourse = new SPQuery();
    //This checks what you have selected in the drop-down list (assuming it's called dropList)
    qryCourse.Query = "<Where><Eq><FieldRef Name='Title'/><Value Type='Text'>" + dropList.SelectedItem.Text + "</Value></Eq></Where>";
    qryCourse.ViewFields = "<FieldRef Name='Instructor'/>"; //You want the Instructor Column to display

    try
    {
        itemCol = list.GetItems(qryCourse);
        foreach (SPListItem item in itemCol)
        {
          //Display the Instructor value in your label 
          lblInstructorName.Text = item["Instructor"].ToString();
        }
    }
    catch (NullReferenceException)
    {
        lblInstructorName.Text = "Some Kind of Error!";
    }

请注意,您仍然需要使用我之前发布的Retrieve SharePoint List Data and bind this to a dropdownlist中的代码来绑定dropList字段,以便它从Lukasz M建议的名为Courses的Sharepoint列表中检索其值.这也将在Page_Load事件中进行(在我上面的代码之前).希望有助于Mihir!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读