从自定义Web部件中数据行中的单元格解码html

本文关键字:单元格 解码 html 数据 Web 自定义 | 更新日期: 2023-09-27 18:24:10

我有以下代码将数据从sharepoint网站中的列表加载到自定义web部件。

 private void Data_load()
        {
            DataTable dt = new DataTable();

            string currentName = SPContext.Current.Web.CurrentUser.Name;
            SPQuery query = new SPQuery();
            query.Query = "<Where><Eq><FieldRef Name='Editor'/><Value Type='Person or Group'>" + currentName + "</Value></Eq></Where>";
            using (SPSite site = new SPSite("http://spdev-6/"))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPList lists = web.GetList("Lists/Advertisements");
                    SPListItemCollection items = lists.GetItems(query);
                    if (items.Count > 0)
                    {
                        //foreach(SPListItem item in items)
                        //{
                        //  string decodeDescrip = Server.HtmlDecode( item["Details"].ToString());
                        //  item["Details"] = decodeDescrip;
                        //}
                        dt = items.GetDataTable();

                    }
                    else
                        lbldata.Text = "No data to show";

                    GridViewD.DataSource = dt;
                    GridViewD.DataBind();
                    HttpContext.Current.Session["Advertisement"] = dt;

                }
            }
        }

现在的问题是,我正在其中一列中获取Htmlncode数据。现在我必须将它从网格视图中删除。那么如何去除呢?

从自定义Web部件中数据行中的单元格解码html

在将列分配给网格之前,可以修改DataTable中的列。看看这里和这里。

    protected void GridView1_DataBound(object sender, EventArgs e)
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            for (int i = 0; i < row.Cells.Count - 1; i++)
            {
                if (row.Cells[i].Text == "0")
                {
                    row.Cells[i].Text = "";
                }
            }
        }
    }

您还可以更改DataBinding上的值,如本SO Answer中所述。

    protected void GridView1_DataBound(object sender, EventArgs e)
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            for (int i = 0; i < row.Cells.Count - 1; i++)
            {
                if (row.Cells[i].Text == "0")
                {
                    row.Cells[i].Text = "";
                }
            }
        }
    }