2012-02-20 3 views
0

나는 라고하는 목록을 가지고 있습니다.을 등록하십시오. 다음은 내 목록의 열입니다.SharePoint Webpart의 목록에서 Gridview로 값을 검색 하시겠습니까?

: 유형

직원 이름 : 개인 또는 그룹
관리자 이름 : 개인 또는 그룹
연습 명 : 텍스트
프로그램 이름의 단일 라인 : 조회
상태 : 선택
선행 조건 : 여러 줄의 텍스트

이제는 이제

<SharePoint:SPGridView runat="server" ID="gridViewManager" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField DataField="Employee Name" HeaderText="Employee Name" /> 
     <asp:BoundField DataField="Manager Name" HeaderText="ManagerName" /> 
     <asp:BoundField DataField="Practice Name" HeaderText="Practice Name" /> 
     <asp:BoundField DataField="Program Name" HeaderText="Program Name" /> 
     <asp:BoundField DataField="Status" HeaderText="Current Status" /> 
     <asp:BoundField DataField="Prerequisite" HeaderText="Prerequisite" /> 
     <asp:TemplateField HeaderText=""> 
      <ItemTemplate> 
       <asp:Button ID="BtnEdit" runat="server" Text="Take Action" /> 
       <asp:Button ID="Button1" runat="server" Text="View Details" /> 
      </ItemTemplate> 
      <HeaderTemplate> 
      </HeaderTemplate> 
     </asp:TemplateField> 
    </Columns> 
</SharePoint:SPGridView> 

: 그리드보기 여기 으로 모든 값을 표시 할 웹 파트는 UserControl을 코드의 코드 내가 webpart.cs 여기

protected void Page_Load(object sender, EventArgs e) 
{ 
    gridViewManager.DataSource = GetData(); 
    gridViewManager.DataBind(); 
} 

#region Try2 
DataTable GetData() 
{ 
    SPSite oSiteCollection = SPContext.Current.Site; 
    SPWeb oWeb = oSiteCollection.OpenWeb(); 
    SPList oSPList = oWeb.Lists["Registration"]; 
    SPListItemCollection oSPListItemCollection = oSPList.Items; 
    DataTable dt = new DataTable();    
    try 
    {    
     dt.Columns.Add("Employee Name", typeof(String)); 
     dt.Columns.Add("Manager Name", typeof(String)); 
     dt.Columns.Add("Practice Name", typeof(String)); 
     dt.Columns.Add("Program Name", typeof(LookupField)); 
     //dt.Columns.Add("Program Name", typeof(String)); 
     dt.Columns.Add("Status", typeof(String)); 
     dt.Columns.Add("Prerequisite", typeof(String));    
     DataRow dataRow;     
     foreach (SPListItem oSplistItem in oSPListItemCollection) 
     { 
      dataRow = dt.Rows.Add(); 
      dataRow["Employee Name"] = oSplistItem["Employee Name"].ToString(); 
      dataRow["Manager Name"] = oSplistItem["Manager Name"].ToString(); 
      dataRow["Practice Name"] = oSplistItem["Practice Name"].ToString(); 
      dataRow["Program Name"] = oSplistItem["Program Name"].ToString(); 
      dataRow["Status"] = oSplistItem["Status"].ToString(); 
      dataRow["Prerequisite"] = oSplistItem["Prerequisite"].ToString(); 
     } 
     return dt; 
    } 
    catch (Exception ex) 
    { 
     System.Diagnostics.Debug.WriteLine("Managers Approval" + ex.Message.ToString()); 
     return dt; 
    } 

#endregion Try2 
} 

에 대해 수행 한 코드입니다 나는이 두 줄의 코드를 가지고 직면하고있다.

dt.Columns.Add("Program Name", typeof(LookupField)); 
dt.Columns.Add("Prerequisite", typeof(String)); 

만약 내가 이것을 사용하지 않는다면,이 웹 파트는 완벽하게 작동한다. 하지만 나는이 필드들도 표시하고 싶었다. 내가 어떻게 할 수 있니?

+0

코드를 그림이 아니라 텍스트로 통합하는 데 감사드립니다. 네가 그것에 접근 할 수있는 것 같아서. 또한 더 뚜렷한 강조 표시뿐만 아니라 굵게 표시 될 수 있습니다. –

+0

정말 미안합니다. 나는 코드 자체로 추가하려고했지만 여기에 HTML 코드를 제출할 수 없다. – Jpaul

+0

나는 당신을 위해 그것을 한동안 낭비하기로 결정했다. 여기서 많은 언어를 코드 예제로 보았습니다. 그래서 당신이 그것을 거절 한 메시지가 있었으면 좋겠다. (누군가가 그것을 검토 할 때까지 잠시 시간이 걸릴 것입니다.) –

답변

0

문제는 널값입니다. 객체가 null 인 경우 .ToString()이 실패합니다. 다른 모든 필드에는 null 값 (쿼리와 관련하여)이 없지만 문제가있는 필드는 가정합니다. 몇 가지 옵션이 있습니다. 값이 null인지 확인하고 빈 문자열이 아니라면 빈 문자열을 넣을 수 있습니다. 문자열이 아닌 이미 많은 문자열에 대해 .ToString-ing이 아닌 그냥 캐스팅 할 수 있습니다. null을 처리하는 Convert.ToString (object)을 사용할 수 있습니다. 다른 여러 가지 옵션으로 계속 진행할 수 있지만 여기에서 가져갈 수 있다고 생각합니다.

2

SharePoint API에서 SPListItemCollection.GetDataTable()을 사용하여 DataTable을 생성하는 데 대해 살펴 보았습니까?

관련 문제