无法在数据表中正确显示URL链接

时间:2011-11-09 16:51:56

标签: c# visual-studio sharepoint-2010

我应该在数据表中显示标题,名称,内容和URL,下面的代码可以使用,但它显示的是6列而不是4列。我使用了超链接,因为我想将链接绑定到我的数据表中。对于每个搜索结果,我想在数据表中显示结果。我的for循环有什么问题?为什么我要获得3列网址?我只想要一个URL列,我可以点击相关内容的链接。

    protected void searchButton_Click(object sender, EventArgs e)
    {
        SPWeb objCurrentWeb;
        SPList objSSList;
        String searchWord = searchBox.Text;
        int intMemberIndex = 0;
        /*WebRequest objWebRequest;
        WebResponse objWebResponse;
        Stream objResponseStream;
        StreamReader objStreamReader;*/


        objCurrentWeb = SPContext.Current.Web;
        objSSList = objCurrentWeb.Lists["Sales Materials"];

        try
        {

            DataTable result = new DataTable();

            result.Columns.Add("Title");
            result.Columns.Add("Name");
            result.Columns.Add("Content");
            result.Columns.Add("Link");


            foreach (SPListItem objSSListItem in objSSList.Items)
            {
                String title = objSSListItem["Title"].ToString();
                String name = objSSListItem["Name"].ToString();
                String content = objSSListItem["Content Type"].ToString();


                if (title.ToUpper().Contains(searchWord.ToUpper()) || name.ToUpper().Contains(searchWord.ToUpper()) || content.ToUpper().Contains(searchWord.ToUpper()))
                {
                    //assign the list item ID to the intMemberIndex variable and exit
                    intMemberIndex = objSSListItem.ID;
                    String url = "http:google.com/" + objSSListItem.Url;

                    HyperLinkField hfield = new HyperLinkField();
                    hfield.HeaderText = "Link";
                    hfield.NavigateUrl = url;
                    hfield.DataTextField = "Link";
                    resultGrid.Columns.Add(hfield);

                    result.Rows.Add(title, name, content,url);      
                }
            }
           this.resultGrid.DataSource = result;
           this.resultGrid.Visible = true;
            this.resultGrid.DataBind();

        }
        catch (Exception ex)
        {
            resultLabel.Text = ex.Message;
        }

    }

1 个答案:

答案 0 :(得分:0)

您在for循环的每次传递中向数据网格添加一个新列,其中if条件为true:

resultGrid.Columns.Add(hfield);

如果您也发布了数据表标记,您将获得更具体的解决方案。