Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / desktop / MFC

Binding Checkbox in GridView (A work around)

4.00/5 (1 vote)
16 Sep 2010CPOL 10.8K  
I needed to bind a checkbox in gridview to a database field but to my disappointment I found that this was not easy. We could bind “Text” property but what if I don’t want to display the value I am binding (e.g. ID of that record). Here is a work around.

I needed to bind a checkbox in gridview to a database field but to my disappointment I found that this was not easy. We could bind “Text” property but what if I don’t want to display the value I am binding (e.g. ID of that record). Here is a work around.

I added a hidden field next to checkbox like below.

<span id="spanTextBox">
<asp:CheckBox ID="chkItem" runat=""server"" Checked="false" />
<asp:HiddenField ID="hfdID" Value=" runat=""server"" />
</span>

It’s easy to access this from server side but if you want the value (intOrderId in my case) in javascript on checkbox click it requires a little trick.

I added a javascript function to each checkbox in databound event of grid.

protected void dgvOrders_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox chk = e.Row.FindControl("chkItem") as CheckBox;
chk.Attributes.Add("onclick", "CheckChanged(‘" + chk.ClientID + "‘);");
}
}

Javascript function added above goes here.

function CheckChanged(id) {
// The line below returns the value of that hidden field we just added.
// So in my case I get the intOrderId value here.
// Note that both these controls should be in a separate container
// like it have added it in the span.
var text = document.getElementById(id).nextSibling.nextSibling.value;
}

Hope this helps you. Enjoy coding….!

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)