gridview隐藏列
我有gridview,我想隐藏数据绑定到gridview后的列,但我得到下面的错误。gridview隐藏列
“索引超出范围必须大于集合的大小非负少 参数名:索引”
我的C#代码如下,
protected void grid_all_posts_DataBound(object sender, EventArgs e)
{
if (grid_all_posts.Columns[1].Visible)
{
grid_all_posts.Columns[1].Visible = false;
}
}
// Read all posts and fill gridview
//////////////////////////////////////////////////
DbCommand dbCommand2;
dbCommand2 = db.GetStoredProcCommand("SP_Select_News");
db.AddInParameter(dbCommand2, "UserId", DbType.Guid, new Guid(Session["UserId"].ToString().Trim()));
DataSet ds = db.ExecuteDataSet(dbCommand2);
grid_all_posts.DataSource = ds;
grid_all_posts.DataBind();
//////////////////////////////////////////////////
我的ASPX代码,
<asp:gridview runat="server" ID="grid_all_posts" OnRowDataBound="grid_all_posts_DataBound"></asp:gridview>
您认为问题是什么?如何隐藏第一列
尝试像下面将工作....
DbCommand dbCommand2;
dbCommand2 = db.GetStoredProcCommand("SP_Select_News");
db.AddInParameter(dbCommand2, "UserId", DbType.Guid, new Guid(Session["UserId"].ToString().Trim()));
DataSet ds = db.ExecuteDataSet(dbCommand2);
grid_all_posts.DataSource = ds;
grid_all_posts.DataBind();
**//after Databind Write the below code**
if (grid_all_posts.Columns.Count > 0)
grid_all_posts.Columns[0].Visible = false;
else
{
grid_all_posts.HeaderRow.Cells[0].Visible = false;
foreach (GridViewRow gvr in grid_all_posts.Rows)
{
gvr.Cells[0].Visible = false;
}
}
这里的VB版本的Pandian代码如果dgvMyLeave.Columns.Count> 0,则 dgvMyLeave.Columns(0)。可见=假 否则 dgvMyLeave。 HeaderRow.Cells(0).Visible = False 对于每个gvr As GridViewRow在dgvMyLeave.Rows中 gvr.Cells(0).Visible = False Next End If – DJDave 2014-03-04 09:47:54
为一个简单的和通用的方法已被窃听我的年龄 - 这不需要任何形式的列计数,我最终今天发现它; DataControlFieldCell.ContainingField.HeaderText
Private Sub GridView_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView.RowDataBound
For Each r As GridViewRow In GridView.Rows
If r.RowType = DataControlRowType.DataRow Then
For Each c As DataControlFieldCell In r.Cells
Dim h As String = c.ContainingField.HeaderText
If h <> "ColumnName" Then c.ContainingField.Visible = False
If IsNumeric(c.Text) Then c.Text = Format(CInt(c.Text), "#,##0")
Next
End If
Next
End Sub
我遍历DataControlFieldCells正如我在我的领域执行上的值进行一些格式化,以及(如上图所示),但你可以只通过头环我想象一下,如果你想进一步削减下来仍。
请参阅msdn了解更多详情。
Proc SP_Select_News返回...的列数? – Pandian 2013-02-11 16:08:03
它返回6列 – 2013-02-11 16:09:14
添加一些代码......尝试...... – Pandian 2013-02-11 16:14:09