choosing to display or not to display a checkbox in repeater control.

I

Imran Aziz

Hello All,
I display a list of entries with a checkbox against them using a
repeater control bound to a database table. Based on the value of database
table I want to either show the checkbox for a row or not to show, how do I
accomplish that using a repeater control ?
Should I do something like this

<%if (((DataRowView)Container.DataItem)["bThisUserHasIt"] == 0)

{ %><asp:CheckBox ID="chkBookMarkID" text='<%#
((DataRowView)Container.DataItem)["nBookMarkID"] %>' runat="server"
ForeColor="White" Font-Size="1px" /<%} %>


(this one does not work , but I am thinking it might be possible to do it
like that, get this error, Error 2 The name 'Container' does not exist in
the current context
C:\Inetpub\wwwroot\allenandovery\bookmarks\recentbookmarks.aspx 24 35
C:\...\allenandovery\
)

or is there a better way to do it, checking and specifying the value in code
behind?


Thanks a lot for your support.
Imran.
 
A

Arjen

Add your checkbox with the visable attribute like this:

visable='<# ((DataRowView)Container.DataItem["bThisUserHasIt"] ==
0)?"true":"false"'

Hope this helps,
Arjen
 
G

Grant Merwitz

The method you are trying will work with the right syntax

But i prefer to push the functionality to the code behind leaving as much
logic out of the UI as possible.

This can be done calling a method that does the functionality you've written
there,

or what i more prefer - using the ItemDataBound event

DataLists, Grids and Repeaters all have a OnItemDataBound event, where item
by item you can perform some processing.
In this case, you can determine - item by item - whether to show or hide
your checkbox.

Just ensure in that ItemDataBound event, you are checking that your not in
the header or footer.
do a check like
private void DataList_OnItemDataBound(System.Object sender,
DataItemEventArgs e)
{
if(e.Item.ItemTemplate != ItemTemplate.Header && e.Item.ItemTemplate
!= ItemTemplate.Footer)
{
//Do you logic to remove checkbox here
}
}

HTH
 
I

Imran Aziz

understood thanks a lot Grant :)
Imran
Grant Merwitz said:
The method you are trying will work with the right syntax

But i prefer to push the functionality to the code behind leaving as much
logic out of the UI as possible.

This can be done calling a method that does the functionality you've
written there,

or what i more prefer - using the ItemDataBound event

DataLists, Grids and Repeaters all have a OnItemDataBound event, where
item by item you can perform some processing.
In this case, you can determine - item by item - whether to show or hide
your checkbox.

Just ensure in that ItemDataBound event, you are checking that your not in
the header or footer.
do a check like
private void DataList_OnItemDataBound(System.Object sender,
DataItemEventArgs e)
{
if(e.Item.ItemTemplate != ItemTemplate.Header &&
e.Item.ItemTemplate != ItemTemplate.Footer)
{
//Do you logic to remove checkbox here
}
}

HTH

Imran Aziz said:
Hello All,
I display a list of entries with a checkbox against them using a
repeater control bound to a database table. Based on the value of
database
table I want to either show the checkbox for a row or not to show, how do
I
accomplish that using a repeater control ?
Should I do something like this

<%if (((DataRowView)Container.DataItem)["bThisUserHasIt"] == 0)

{ %><asp:CheckBox ID="chkBookMarkID" text='<%#
((DataRowView)Container.DataItem)["nBookMarkID"] %>' runat="server"
ForeColor="White" Font-Size="1px" /<%} %>


(this one does not work , but I am thinking it might be possible to do it
like that, get this error, Error 2 The name 'Container' does not exist in
the current context
C:\Inetpub\wwwroot\allenandovery\bookmarks\recentbookmarks.aspx 24 35
C:\...\allenandovery\
)

or is there a better way to do it, checking and specifying the value in
code
behind?


Thanks a lot for your support.
Imran.
 
I

Imran Aziz

Thanks Arjen this is a quick solution and works great !
Imran.

Arjen said:
Add your checkbox with the visable attribute like this:

visable='<# ((DataRowView)Container.DataItem["bThisUserHasIt"] ==
0)?"true":"false"'

Hope this helps,
Arjen


Imran Aziz said:
Hello All,
I display a list of entries with a checkbox against them using a
repeater control bound to a database table. Based on the value of
database
table I want to either show the checkbox for a row or not to show, how do
I
accomplish that using a repeater control ?
Should I do something like this

<%if (((DataRowView)Container.DataItem)["bThisUserHasIt"] == 0)

{ %><asp:CheckBox ID="chkBookMarkID" text='<%#
((DataRowView)Container.DataItem)["nBookMarkID"] %>' runat="server"
ForeColor="White" Font-Size="1px" /<%} %>


(this one does not work , but I am thinking it might be possible to do it
like that, get this error, Error 2 The name 'Container' does not exist in
the current context
C:\Inetpub\wwwroot\allenandovery\bookmarks\recentbookmarks.aspx 24 35
C:\...\allenandovery\
)

or is there a better way to do it, checking and specifying the value in
code
behind?


Thanks a lot for your support.
Imran.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,165
Latest member
JavierBrak
Top