Как отключить и включить ItemTemplate LinkButton на основе GridView первой и последней строки? - PullRequest
1 голос
/ 12 января 2012

У меня есть вид сетки с текстовыми полями и двумя LinkButton Up и Down, я хочу сделать LinkButton Up и Down как Disable, Условие состоит в том, что Linkbutton Up должен быть отключен для первой строки, а Linkbutton Down должен быть отключен дляпоследняя строка.

Я пытаюсь сделать в onRowDataBound .. Но я не могу сделать ..

foreach (GridViewRow row in GridView1.Rows)
{
  // some code?
}

Пожалуйста, кто-нибудь, скажите мне, как это сделать ... с некоторым тестовым опытом.

Ответы [ 3 ]

2 голосов
/ 12 января 2012

Я бы не стал делать это в событии OnRowDataBound, я бы отключил элементы управления после привязки GridView:

// Bind
gv.DataSource = datasource;
gv.DataBind();

// Disable Up/Down LinkButtons
if (gv.Rows.Count > 0)
{
    // With FindControl() if you know the IDs:
    ((LinkButton)gv.Rows[0].Cells[0].FindControl("lb_up").Enabled = false; // Disable up LinkButton 
    ((LinkButton)gv.Rows[gv.Rows.Count - 1].Cells[0].FindControl("lb_down").Enabled = false; // Disable down LinkButton 

    // -- OR --

    // Directly index the controls, assuming Up is at 0, and Down is at 1:
    ((LinkButton)gv.Rows[0].Cells[0].Controls[0]).Enabled = false; // Disable up LinkButton 
    ((LinkButton)gv.Rows[gv.Rows.Count - 1].Cells[0].Controls[1]).Enabled = false; // Disable down LinkButton 
}

Вы можете использовать метод FindControl или просто напрямую индексировать элементы управления.

0 голосов
/ 12 января 2012

Вы делаете ту же задачу, когда привязываете свою сетку следующим образом. Предполагая, что ваша ссылка находится внутри asp:TemplateField.

 if (GridView1.PageIndex == 0)
  {
     GridView1.Rows[0].FindControl("lnkUp").Visible = false;

  }
  if (GridView1.PageIndex == (GridView1.PageCount - 1))
  {
      GridView1.Rows[GridView1.Rows.Count - 1].FindControl("lnkDown").Visible = false;
  }
0 голосов
/ 12 января 2012

Вам необходимо сравнить RowType в событии RowDataBound.Примерно так:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    GridViewRow row = e.Row;
    if (row.RowType == DataControlRowType.DataRow)
    {
        .....
    }
}

Можно добавить кнопки Down и Up в HeaderTemplate и FooterTemplate соответственно.

if (row.RowType == DataControlRowType.Header)
    {
    }

if (row.RowType == DataControlRowType.Footer)
    {
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...