【问题标题】:How to disable and Enable ItemTemplate LinkButton based on GridView first and last row?如何根据 GridView 第一行和最后一行禁用和启用 ItemTemplate LinkBut​​ton?
【发布时间】:2012-01-12 08:32:05
【问题描述】:

我有一个带有文本框和两个 LinkBut​​ton Up 和 Down 的网格视图,我想将 LinkBut​​ton Up 和 Down 设置为禁用,条件是,Linkbutton Up 必须禁用第一行,Linkbutton Down 必须禁用最后一行。

我正在尝试在 onRowDataBound.. 但我做不到..

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

请有人告诉我如何做到这一点.. 用一些测试经验。

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    我不会在 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 方法或直接索引控件。

    【讨论】:

      【解决方案2】:

      您需要在 RowDataBound 事件中比较 RowType。像这样的:

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

      您可以分别在 HeaderTemplate 和 FooterTemplate 中添加 DownUp 按钮。

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

      【讨论】:

      • 假设我在 Gridview 中有 5 个文本框,然后我用所有五个文本框上下显示 btn,并尝试上下移动文本框,或者你可以说移动文本,所以我是尝试做的是,当它是第一个文本框时,向上 btn 应该被禁用,如果它是最后一个文本框,那么向下 btn 应该被禁用......
      【解决方案3】:

      当您像这样绑定网格时,您执行相同的任务。假设您的链接在 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;
        }
      

      【讨论】:

        猜你喜欢
        • 2020-02-15
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 2019-09-24
        • 1970-01-01
        • 2020-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多