I have a function:
private void ds_ItemBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemIndex >= 0)
{
e.Item.Cells[0].Controls.Add(Utility.GetImage("Delegate"));
e.Item.Attributes.Add("Description", ((System.Data.DataRowView)(e.Item.DataItem)).Row["DelegateDescription"].ToString());
string DelegateName = ((System.Data.DataRowView)(e.Item.DataItem)).Row["DelegateName"].ToString();
e.Item.Attributes.Add("DelegateName", ((System.Data.DataRowView)(e.Item.DataItem)).Row["DelegateName"].ToString());
((System.Web.UI.WebControls.CheckBox)(e.Item.Cells[3].Controls[0])).Checked = false;
if (hDelegates.Value != "")
{
string[] selectedDelegates = hDelegates.Value.Split(new char[] { ',' });
foreach (string delegate in selectedDelegates)
{
if (delegate.Equals(delegateName))
{
count++;
((System.Web.UI.WebControls.CheckBox)(e.Item.Cells[3].Controls[0])).Checked = true;
break;
}
}
}
}
if (count == dDelegates.Items.Count)
lblEditCheck.Checked = true;
else
lblEditCheck.Checked = false;
}
The UI has a table with each row corresponding to one entry. So, each row has an image, a description, a name.
I am getting an exception in the code at line:
((System.Web.UI.WebControls.CheckBox)(e.Item.Cells[3].Controls[0])).Checked = false;
The exception is : Unable to cast object of type 'System.Web.UI.LiteralControl' to type 'System.Web.UI.WebControls.CheckBox'.
Further, e.Item.Cells[3].Controls[0] is System.Web.UI.LiteralControl .
And the the check box markup looks like <asp:CheckBox ID="lblEditCheck" runat="server" TabIndex="0" Width="30px" CssClass="ColumnHeader" /></td>
I am stuck on getting this to work for a few days now. Please let me know if any more info will be useful.
Thanks a lot for your help.
What didn't work:
var checkbox = (System.Web.UI.WebControls.CheckBox)e.Item.FindControl("lblEditCheck");
checkbox.Checked = false;
In this case checkbox is null. And the corresponding exception is thrown.