我有两个名为“课程”,“教师”的名单. “课程”列表包含以下列.
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); }
解决方法
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!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。