【问题标题】:Hide buttons for last row in gridview隐藏gridview中最后一行的按钮
【发布时间】:2014-04-02 07:46:58
【问题描述】:

我正在使用下面的代码来隐藏/编辑和删除gridview 中的最后一行。

当我使用页面索引时,按钮会隐藏在每一页的最后一行吗?

 protected void Page_PreRender(object sender, EventArgs e)
 {
    var lastRow = gvDetails.Rows[gvDetails.Rows.Count - 1];
    lastRow.FindControl("btnEdit").Visible = false;
    lastRow.FindControl("btnDelete").Visible = false;
 } 

有什么解决这个问题的建议吗?

我也使用下面的方法来绑定网格并添加一个具有列总和的新数据行。现在如何将此数据行添加为 gridview 的第一行。

public void LoadData()
{
    DataTable dtDetails = DetailsDataRepository.GetDetails();
    BindDetailsGrid(dtDetails);
    DataTable dt = DetailsDataRepository.GetSum();
    DataRow dr = dtDetails.NewRow();
    dr["Total_Amount"] = Convert.ToDecimal(dt.Rows[0]["Total_Amount"].ToString().Substring(1)).ToString("C0");
    dr["Monthly_Amount"] = Convert.ToDecimal(dt.Rows[0]["Monthly_Amount"].ToString().Substring(1)).ToString("C0");
    dtDetails.Rows.InsertAt(dr,0);
    gvDetails.DataSource = dtDetails;
    gvDetails.DataBind();
    if (gvDetails.PageIndex == 0)
    {
        var lastRow = gvDetails.Rows[0];
        lastRow.FindControl("btnEdit").Visible = false;
        lastRow.FindControl("btnDelete").Visible = false;
        lastRow.FindControl("lblComments").Visible = false;
        lastRow.Height = 35;
        lastRow.Font.Size = 11;
        lastRow.Font.Bold = true;
    }        
}

页面索引:

protected void gvDetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    gvDetails.PageIndex = e.NewPageIndex;
    BindGrid();
    if (gvDetails.PageIndex == 0)
    {
        var lastRow = gvODetails.Rows[0];
        lastRow.FindControl("btnEdit").Visible = false;
        lastRow.FindControl("btnDelete").Visible = false;
        lastRow.FindControl("lblComments").Visible = false;
        lastRow.Height = 35;
        lastRow.Font.Size = 11;
        lastRow.Font.Bold = true;
    }
}

更新:

public void LoadData()
{
    DataTable dtDetails = DetailsDataRepository.GetDetails();
    BindDetailsGrid(dtDetails);
    DataTable dt = DetailsDataRepository.GetSum();
    DataRow dr = dtDetails.NewRow();
    dr["Total_Amount"] = Convert.ToDecimal(dt.Rows[0]["Total_Amount"].ToString().Substring(1)).ToString("C0");
    dr["Monthly_Amount"] = Convert.ToDecimal(dt.Rows[0]["Monthly_Amount"].ToString().Substring(1)).ToString("C0");
    dtDetails.Rows.InsertAt(dr, 0);
    gvDetails.DataSource = dtDetails;
    gvDetails.DataBind();
    if (gvDetails.PageIndex == 0)
    {
        var lastRow = gvDetails.Rows[0];
        lastRow.FindControl("btnEdit").Visible = false;
        lastRow.FindControl("btnDelete").Visible = false;
        lastRow.FindControl("lblComments").Visible = false;
        lastRow.Height = 35;
        lastRow.Font.Size = 11;
        lastRow.Font.Bold = true;
        lastRow.BackColor = System.Drawing.Color.LightGray;
    }  
}

页面索引:

protected void gvDetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
 gvDetails.PageIndex = e.NewPageIndex;
 BindGrid();
 if (gvDetails.PageIndex == 0)
  {
    var lastRow = gvDetails.Rows[0];
    lastRow.FindControl("btnEdit").Visible = false;
    lastRow.FindControl("btnDelete").Visible = false;
    lastRow.FindControl("lblComments").Visible = false;
    lastRow.Height = 35;
    lastRow.Font.Size = 11;
    lastRow.Font.Bold = true;
  }
}

【问题讨论】:

  • 你检查不同网格中的最后一行gvOBMDetails.Rows[gvDetails.Rows.Count - 1]
  • gvDetails.Rows.Count 将为您提供当前可见的行数。

标签: c# asp.net .net gridview


【解决方案1】:

试试这个

if(gvOBMDetails.PageCount == 1)//Updated
{
    var lastRow = gvOBMDetails.Rows[gvOBMDetails.Rows.Count - 1];
    lastRow.FindControl("btnEdit").Visible = false;
    lastRow.FindControl("btnDelete").Visible = false;
}
else if(gvOBMDetails.PageIndex == gvOBMDetails.PageCount -1)
{
    var lastRow = gvOBMDetails.Rows[gvOBMDetails.Rows.Count - 1];
    lastRow.FindControl("btnEdit").Visible = false;
    lastRow.FindControl("btnDelete").Visible = false;
}

【讨论】:

  • 这很好用。我在其他页面中有一个gridview,其中一列是链接按钮,因此当我单击任何值时,它将导航到此页面。现在我可以看到最后一行突出显示了,有什么解决方案可以解决这个问题吗?
  • @Vicky 在绑定gridview或者页面索引改变事件后立即添加上述代码。
  • 我已经在 Page_PreRender 事件中添加了上面的代码。因此,从其他页面单击 gridview 列将进入此页面。
  • 你在Page_PreRender事件中绑定数据吗?
  • 没有页面加载事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
相关资源
最近更新 更多