or
<asp:CheckBox ID="cb" runat="server" /> <asp:HiddenField ID="hf" runat="server" />if (e.Item is GridDataItem){ GridDataItem item = (GridDataItem)e.Item; DataRowView drv = (DataRowView)item.DataItem; for (int i = 0; i < rgTags.MasterTableView.Columns.Count; i++ ) { string uniqueName = rgTags.MasterTableView.Columns[i].UniqueName; if (drv[i] is System.DBNull) { item[uniqueName].Controls[0].FindControl("cb").Visible = false; } else { AdminTag tag = (AdminTag)drv[i]; ((CheckBox)item[uniqueName].Controls[0].FindControl("cb")).Text = tag.sText; ((HiddenField)item[uniqueName].Controls[0].FindControl("hf")).Value = tag.nTagId.ToString(); } }}<radG:GridTemplateColumn UniqueName="CheckBoxColumn"> <ItemTemplate> <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="CheckedChanged" /> </ItemTemplate></radG:GridTemplateColumn>public void CheckedChanged(object sender, EventArgs e) { GridDataItem checkedItem = (GridDataItem)(sender as CheckBox).NamingContainer; string checkedItemIndex = checkedItem.GroupIndex.Substring(checkedItem.GroupIndex.LastIndexOf('_'), 2); foreach (GridDataItem item in checkedItem.OwnerTableView.Items) { string currItemIndex = item.GroupIndex.Substring(item.GroupIndex.LastIndexOf('_'), 2); if (checkedItem.GroupIndex.StartsWith(item.GroupIndex.Substring(0,1)) && currItemIndex != checkedItemIndex) { (item.FindControl("CheckBox1") as CheckBox).Checked = false; } } }