Retrieve the values from a list to Gridview in SharePoint Webpart?

无人久伴 提交于 2019-12-12 03:22:34

问题


I have a List called Registration and the following are the columns of my list.

Column : Type

Employee Name : Person or Group
Manager Name : Person or Group
Practice Name : Single line of text
Program Name : Lookup
Status : Choice
Prerequisite : Multiple lines of text

And now i created a web part which will display all these values as a grid view here is the code which i have done for 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
}

Here is the code for usercontrol code:

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

Now i am facing a proble with these two lines of code

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

if i don't use this then this webpart works perfectly . but i wanted to display these fields too . how can i do this ?


回答1:


The problem you're having is with null values. .ToString() will fail if the object is null. I assume that all of the other fields never have any null values (at least with your queries) but the fields that you are having problems with do. You have a few options. You can just check if the value is null and put in an empty string if it's not, for many of the fields that are already strings you can just cast them, rather than .ToString-ing them. You can use Convert.ToString(object) which handles nulls. I could go on with several other options, but I think you can take it from here.




回答2:


Did you take a look at having the SharePoint API generate the DataTable for you using SPListItemCollection.GetDataTable()?



来源:https://stackoverflow.com/questions/9360863/retrieve-the-values-from-a-list-to-gridview-in-sharepoint-webpart

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!