在调用实现ITemplate接口处错请高人帮我看看
在调用实现ITemplate接口处错请高人帮我看看TemplateColumn s=new TemplateColumn();
s.HeaderText="ID";
LabelTemplate s1 =new LabelTemplate ();
s.ItemTemplate= s1;
MyList.Columns.AddAt(MyList.Columns.Count,s);
public class LabelTemplate : ITemplate
{
// Instantiate the elements of the template in the given
// container. In this case, a DataGridItem element.
public void InstantiateIn(Control container)
{
container.Controls.Add(new LiteralControl("<b>"));
Label lblID = new Label();
lblID.DataBinding += new EventHandler(this.BindID);
container.Controls.Add(lblID);
container.Controls.Add(new LiteralControl("</b>, "));
}
// Handler of the OnDataBinding event for the Label element
// that renders the ID column in the template.
private void BindID(Object sender, EventArgs e)
{
Label l = (Label) sender;
DataGridItem container = (DataGridItem)
l.NamingContainer;
l.Text = ((DataRowView)container.DataItem)["DLID"].ToString();
}
}
报错的信息
指定的转换无效。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidCastException: 指定的转换无效。
源错误:
行 75: Label l = (Label) sender;
行 76: DataGridItem container = (DataGridItem) l.NamingContainer;
行 77: l.Text = ((DataRowView)container.DataItem)
行 78: ["DLID"].ToString();
行 79: }
源文件: c:\inetpub\wwwroot\webadex\logiclayer\business.cs 行: 77 --------------------编程问答-------------------- :(
--------------------编程问答-------------------- 我在给加50分 --------------------编程问答-------------------- lblID.DataBinding += new EventHandler(this.BindID);
这一行里把this去掉改成lblID.DataBinding += new EventHandler(BindID);试试 --------------------编程问答-------------------- 不行, 是l.Text = ((DataRowView)container.DataItem)
["DLID"].ToString();
我的Datagrid读取的是SqlDataReader --------------------编程问答-------------------- 但是点击页面的按钮就会PostBack回来,CheckBox的状态就没法保存
如何处理? --------------------编程问答-------------------- 楼主这个问题有解决不? --------------------编程问答-------------------- ["DLID"] 换成索引号,[0]之类的东东。 --------------------编程问答-------------------- 我的错误是
private void DataBinding(object sender, EventArgs e)
{
try
{
Label l = (Label) sender;
DataGridItem container = (DataGridItem)l.NamingContainer;
l.Text = ((DataRowView)container.DataItem)["classname"].ToString();
}
catch (Exception caught)
{
string ss = caught.Message;
ss = "";
}
}
Label l = (Label) sender;这个代码报错,错误信息:"指定的转换无效。"
请问这么解决??? --------------------编程问答-------------------- 这个问题解决了 确实是类型错了
应该是用Literal类型
但如果DataGraid里面是TextBox的 怎么样把数据库的内容绑定到TextBox呢 --------------------编程问答-------------------- 我现在不怎么用datagrid 而是自己写
补充:.NET技术 , C#