出现此错误通常是因为数据类型不匹配,比如将字符串类型绑定到数值类型或日期类型的控件上。
以下是修改代码的建议:
在GridView上设置DataKeys,用于存储将要绑定到DetailView的数据的主键值。
在GridView的SelectedIndexChanged事件中,获取当前选中行的DataKey的值,并将其传递给DetailView的DataSource。
在DetailView的DataBinding事件中,根据传递的主键值从数据源中获取数据,并进行绑定。
下面是一个示例代码:
前台代码:
后台代码:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GridView1.DataSource = GetData(); GridView1.DataBind(); } }
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { DetailsView1.DataSource = GetDataByKey(int.Parse(GridView1.SelectedDataKey.Value.ToString())); DetailsView1.DataBind(); }
protected void DetailsView1_DataBinding(object sender, EventArgs e) { if (DetailsView1.DataSource != null) { DataRowView row = (DataRowView)DetailsView1.DataSource; DetailsView1.Rows[0].Cells[1].Text = row["ID"].ToString(); DetailsView1.Rows[1].Cells[1].Text = row["Name"].