As title I have some code about add HyperLink and Highlight keywords in RowDataBound. It works when Page changes except stays in same page(click searchbtn). The condiction is HyperLink will disapper but highlight work normally. I try to write in Rowcreated(),if I do this the not only hyperlink but also content will disapper.How can I fix this problem? thanks.
Here's some code
protected override void LoadViewState(object savedState)
{
if (savedState != null)
{
object[] myState = (object[])savedState;
if (myState[0] != null)
{
base.LoadViewState(myState[0]);
}
if (myState[1] != null)
{
SqlDataSource1.SelectCommand = Convert.ToString(myState[1]);
}
}
}
protected override object SaveViewState()
{
object baseSate = base.SaveViewState();
object[] myState = new object[2];
myState[0] = baseSate;
myState[1] = SqlDataSource1.SelectCommand;
return myState;
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string[] keywords = tbKeyWords.Text.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
this.keywords = keywords.ToList();
switch (DocRange.SelectedItem.Value)
{
case "all":
foreach (string item in this.keywords)
{
e.Row.Cells[1].Text = e.Row.Cells[1].Text.Replace(item, "<span style='background:#FF0;'>" + item + "</span>");
e.Row.Cells[2].Text = e.Row.Cells[2].Text.Replace(item, "<span style='background:#FF0;'>" + item + "</span>");
}
break;
case "parsecontent":
foreach (string item in this.keywords)
{
e.Row.Cells[2].Text = e.Row.Cells[2].Text.Replace(item, "<span style='background:#FF0;'>" + item + "</span>");
}
break;
case "filename":
foreach (string item in this.keywords)
{
e.Row.Cells[1].Text = e.Row.Cells[1].Text.Replace(item, "<span style='background:#FF0;'>" + item + "</span>");
}
break;
}
HyperLink Hyper = new HyperLink();
Hyper.Text = e.Row.Cells[1].Text;
Hyper.NavigateUrl = "" + e.Row.Cells[1].Text;
e.Row.Cells[1].Controls.Add(Hyper);
}
}
Would you try by adding HyperLink inside Gridview Control first as below.