2011-11-09 14 views
0

タイトル、名前、コンテンツ、URLをデータテーブルに表示するはずです。以下のコードは動作しますが、4列ではなく6列を表示しています。リンクをデータテーブルにバインドしたいのでハイパーリンクを使用しました。すべての検索結果について、結果をデータテーブルに表示したい。 forループで何が問題になっていますか?なぜ私は3列のURLを取得していますか?私は関連するコンテンツのリンクをクリックすることができる1つのURL列だけを必要とします。データテーブルに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; 
     } 

    } 

答えて

0

あなたは条件が、このラインでtrueの場合、ループのためのあなたのすべてのパスで、あなたのデータグリッドに新しい列を追加している:

resultGrid.Columns.Add(hfield); 

あなたは、あなたもあなたのデータテーブルマークアップを投稿すると」より具体的な解決策を得るでしょう。