【发布时间】:2017-04-07 06:13:42
【问题描述】:
我有一个函数:
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;
}
UI 有一个表格,每一行对应一个条目。因此,每一行都有一个图像、一个描述、一个名称。
我在以下行的代码中遇到异常:
((System.Web.UI.WebControls.CheckBox)(e.Item.Cells[3].Controls[0])).Checked = false;
例外是:Unable to cast object of type 'System.Web.UI.LiteralControl' to type 'System.Web.UI.WebControls.CheckBox'.
此外,e.Item.Cells[3].Controls[0] 是 System.Web.UI.LiteralControl。
复选框标记看起来像<asp:CheckBox ID="lblEditCheck" runat="server" TabIndex="0" Width="30px" CssClass="ColumnHeader" /></td>
我坚持让这个工作好几天了。如果有更多有用的信息,请告诉我。
非常感谢您的帮助。
什么没用:
var checkbox = (System.Web.UI.WebControls.CheckBox)e.Item.FindControl("lblEditCheck");
checkbox.Checked = false;
在这种情况下,复选框为空。并抛出相应的异常。
【问题讨论】:
-
@john 我用一种行不通的方式编辑了这个问题。非常相似。
-
请给我们看看你的html
标签: c# asp.net .net visual-studio web-applications