try like this..
create a hidden button on the screen and some hidden fields to read the row values.
on change of the check box in the client side ( javascript) you can read the row values and assign in the hidden fields
and you can read the same in the server in the button click event...
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="jquery-1.10.2.js" type="text/javascript"></script>
<script language="Javascript">
var change = function (thisctrl) {
document.getElementById('hdnfldName').value = thisctrl.nextSibling.innerHTML;
document.getElementById('hdnfldChecked').value = thisctrl.checked;
document.getElementById('btnHidden').click();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:DataList runat="server" ID="DataList2" RepeatDirection="Vertical">
<ItemTemplate>
<table width="290px">
<tr>
<td align="left" width="200px">
<asp:CheckBox ID="chkBttn" CssClass="chck_btn" Text='<%# Eval("OptionalServicesName")%>'
onclick="change(this)" Checked="false" runat="server" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
<asp:Button ID="btnHidden" runat="server" Style="visibility: hidden" OnClick="btnHidden_Click" />
<asp:HiddenField runat="server" ID="hdnfldName" Value="" />
<asp:HiddenField runat="server" ID="hdnfldChecked" Value="" />
</form>
</body>
</html>
protected void btnHidden_Click(object sender, EventArgs e)
{
string currentItem = hdnfldName.Value;
bool currentItemCHeked = Convert.ToBoolean( hdnfldChecked.Value);
}