By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,171 Members | 1,181 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,171 IT Pros & Developers. It's quick & easy.

Make one cell in gridview invisible?

P: n/a
Jo
Hi all,

I have a gridview displaying a dataset and some buttons. When a certain
cell of this datasetrow is empty, I want a button in that row to be
visible, otherwise no button should be shown in that row.

I'm trying to make this work all day, but it's not going to work.

I tried this in the rowCreated event. I am able to find the right row
and cell in this row (as a datarow), but now the right gridview
row-cell should be made visible.

This is what I have right now (C#):

protected void supplierFilesGrid_RowCreated(object sender,
GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView drView = (DataRowView)e.Row.DataItem;
DataRow drRow = drView.Row;

if (drRow[2].ToString() == "NEW")
{
int i = e.Row.RowIndex; //
this works fine, after this I get an error:
//grid.Rows[i].Cells[1].Visible = false; //
argumentOutOfRangeException...
(sender as GridView).Rows[i].Cells[1].Visible =
false;
}
}
}

Has anyone a suggestion how to make this work?

Thanks in advance!

Regards,
Jo

Apr 6 '06 #1
Share this Question
Share on Google+
11 Replies


P: n/a
I believe you want the grid.ItemDataBound event

Apr 6 '06 #2

P: n/a
Jo
Hi,
Maybe I do, but what should I do within this event?

Regards,
Jo

Apr 6 '06 #3

P: n/a

Here is a snippet of code I have in this event to get you started.

e.Item.Cells.Item(4).ToolTip = e.Item.Cells.Item(5).Text

Apr 6 '06 #4

P: n/a
Jo
Hi,
Thanks for your quick reply! You gave me the right hint to continue
this 'problem'.

A gridview doesn't have an ItemDataBound event, I used the RowDataBound
event and it works! But not completely as hoped: the data/buttons in
the columns behind the 'Invisible' column move 1 column to the left,
filling the space of the 'invisible' column. That's not what I need,
this column should be left empty, 'not replaced'...
That's the only issue left now. Any solution to that?

protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView drView = (DataRowView)e.Row.DataItem;
DataRow drRow = drView.Row;

if (drRow[6].ToString() != "")
{
int i = e.Row.RowIndex;
e.Row.Cells[7].Visible = false;
}
}
}

Regards,
Jo

Apr 7 '06 #5

P: n/a
"Jo" <jo**************@organon.com>'s wild thoughts were
released on 7 Apr 2006 00:49:27 -0700 bearing the following
fruit:
Hi,
Thanks for your quick reply! You gave me the right hint to continue
this 'problem'.

A gridview doesn't have an ItemDataBound event, I used the RowDataBound
event and it works! But not completely as hoped: the data/buttons in
the columns behind the 'Invisible' column move 1 column to the left,
filling the space of the 'invisible' column. That's not what I need,
this column should be left empty, 'not replaced'...
That's the only issue left now. Any solution to that?
You don't want to remove the cell, only it's contents.

J
protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView drView = (DataRowView)e.Row.DataItem;
DataRow drRow = drView.Row;

if (drRow[6].ToString() != "")
{
int i = e.Row.RowIndex;
e.Row.Cells[7].Visible = false;
}
}
}

Regards,
Jo

Jan Hyde (VB MVP)

--
Divorce: Going through a change of wife. (Henny Youngman)

Apr 7 '06 #6

P: n/a
Jo
Hi,

You don't want to remove the cell, only it's contents.


I thought I wasn't removing anything, just hiding
("e.Row.Cells[7].Visible = false"),
still the content of remaining cells in that row is taking the place of
the content of the 'invisible' cell.

So, maybe you can be more clear about this?

Thank you!
Jo

Apr 7 '06 #7

P: n/a
"Jo" <jo**************@organon.com>'s wild thoughts were
released on 7 Apr 2006 02:30:49 -0700 bearing the following
fruit:
Hi,

You don't want to remove the cell, only it's contents.


I thought I wasn't removing anything, just hiding
("e.Row.Cells[7].Visible = false"),
still the content of remaining cells in that row is taking the place of
the content of the 'invisible' cell.

So, maybe you can be more clear about this?


'I want a button in that row to be visible, otherwise no
button should be shown in that row'

So change the visible propery of the button to false.

Jan Hyde (VB MVP)

--
Could you say that a cannibalistic lion might swallow his pride?
(Ken Shurget)

Apr 7 '06 #8

P: n/a
Jo
Hi,

So change the visible propery of the button to false.


First, I didn't know how to do that, but I've tried this code (see
below), and I got an ArgumentOutOfRangeException!
I guess that the row which gives the GridViewRowEventArgs haven't been
created in the GridView at that time, the row before this one does exit
in de Gridview, the current one not...
Maybe I have to try to do this in the rowcreated_event???

protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)

{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView drView = (DataRowView)e.Row.DataItem;
DataRow drRow = drView.Row;

if (drRow[6].ToString() != "")
{
int i = e.Row.RowIndex;
//e.Row.Cells[7].Visible = false; REPLACED BY:
grid.Rows[i].Controls[7].Visible = false; ////////
Gives an ArgumentOutOfRangeException!
}
}
}

Apr 7 '06 #9

P: n/a
Jo
I got the same problem in the rowcreated_event...

And tried "e.Row.Cells.RemoveAt(7);" in stead of
"e.Row.Cells[7].Visible = false", but that gives (visually) the same
results
That's something I can't explain: removing and making invisible isn't
the same!

I'm going of to enjoy my weekend. Hopefully someone can give me a
straight answer and a solution to my 'problem'.

Enjoy!
Jo

Apr 7 '06 #10

P: n/a
It's not Controls[7]. Similar to Cell[7].Controls[0]

Apr 7 '06 #11

P: n/a
Jo
Thanks for your support!
Now it's working:

e.Row.Cells[7].Controls[1].Visible = false;

Thank you!
Jo

Apr 10 '06 #12

This discussion thread is closed

Replies have been disabled for this discussion.