我应该在数据表中显示标题,名称,内容和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;
}
}
答案 0 :(得分:0)
您在for循环的每次传递中向数据网格添加一个新列,其中if条件为true:
resultGrid.Columns.Add(hfield);
如果您也发布了数据表标记,您将获得更具体的解决方案。