我有一个详细信息 View ,它使用数据访问层和查询字符串可以正常工作。但是,我想提取其中一个字段并将其用作标签中的文本,以位于 DetailsView 上方作为该页面的标题。
这可能吗?如果是这样,怎么办?
这是详细信息 View 的摘要:
<Fields>
<asp:BoundField DataField="bandname" HeaderText="Band" />
<asp:BoundField DataField="contactname" HeaderText="Contact" />
<asp:BoundField DataField="county" HeaderText="County" />
</Fields>
以及背后的代码:
if (Request.QueryString.Count != 0)
{
int id = int.Parse(Request.QueryString["bandid"]);
dtvBand.Visible = true;
List<Band> bandDetails = new List<Band> { BandDAL.AnonGetAllBandDetails(id) };
dtvBand.DataSource = bandDetails;
dtvBand.DataBind();
}
我想要做的是获取第一个 BoundField 行中的数据并将其设为标签的文本。伪代码:
Label1.Text = (<asp:BoundField DataField="band")
最佳答案
我不会尝试在 DetailsView
上查找文本,而是在 DataSource
中查找文本。您可以使用 DataBound
事件,该事件在 DetailsView
进行数据绑定(bind)之后触发,因此可以确保 DataItem
存在.
这取决于您的 DetailsView
的Datasource
。通常它是一个DataRowView
。您必须转换它,然后才能访问它的列:
protected void DetailsView1_DataBound(Object sender, EventArgs e)
{
DetailsView dv = (DetailsView)sender;
string yourText = (string)((DataRowView)dv.DataItem)["ColumnName"];
Label1.Text = yourText;
}
如果它不是 DataRowView
,请使用调试器查看 dv.DataItem
实际上是什么。
关于asp.net - 将 BoundField 提取到标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34224232/