views:

43

answers:

2

I am working in asp.net using the gridview control. I have a button column that I create dynamically as such:

            ButtonField bfSelect = new ButtonField();
            bfSelect.HeaderText = "View";
            bfSelect.ButtonType = ButtonType.Link;
            bfSelect.CommandName = "View";
            bfSelect.Text = "View";

            grdAttachments.Columns.Add(bfSelect);

The text on the button is the same for every row. I was wondering if there was any way to have the text be different for different rows depending on a condition. When I try to look at the text property of a particular row it is blank, if I try to set it, it does not change.

Thanks in advance.

Bob

A: 

There are a few ways to do this, off the top of my head I suggest you change the value in the RowDataBind event.

This is hand typed, so there might be typos..

protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row .RowType == DataControlRowType .DataRow )
  {
    Button button = (Button)e.Row.Cells[0].Controls[0];
    button.Text = "Your New Value";
  }
}
Zachary
+1  A: 

Hi,

in the RowDataBound event you can check the current row. For example:

String text = ((Label)e.Row.FindControl("aLabel")).Text;
if(text == "Yes")
{
    ((LinkButton)e.Row.FindControl("bfSelect").Text = "Good to go!";
} 

For this you also need to set the ID of the button to bfSelect.

Grz, Kris.

XIII