如何修改 DetailsView Databound 事件中的数据
我在 aspx 页面中使用带有 sqldatasource 的详细信息视图。 我正在尝试对某些字段进行一些预处理和后处理 - 基本上是将 html 列表转换为换行符分隔列表以进行编辑,然后返回到 html 以存储在数据库中。
ItemUpdating 中的后处理很容易,但 DataBound 中的预处理很混乱......
protected void DetailsView1_DataBound(object sender, EventArgs e)
{
if (DetailsView1.Rows.Count > 2)
{
string s =((DataRowView)DetailsView1.DataItem).Row.ItemArray[2].ToString();
TextBox box1 = (TextBox) DetailsView1.FindControl("textbox1");
if (box1 != null)
{
box1.Text = preprocess(s);
}
}
}
的脆弱性
它是string s=((DataRowView)DetailsView1.DataItem).Row.ItemArray[2].ToString() ;
这让我心烦意乱。我确信我错过了一些(不止一件事)明显的东西!
我想我希望做一些更像我的 ItemUpdating 的事情...
e.NewValues["thirdline"] = postprocess(e.NewValues["thirdline"].ToString());
I'm using a detailsview with an sqldatasource in the aspx page.
I'm trying to do some pre and post processing on some of the fields - basically to convert a html list to a newline separated list for editing and back to html to store in the database.
The post-processing in ItemUpdating is easy enough but the pre-processing in DataBound is messy...
protected void DetailsView1_DataBound(object sender, EventArgs e)
{
if (DetailsView1.Rows.Count > 2)
{
string s =((DataRowView)DetailsView1.DataItem).Row.ItemArray[2].ToString();
TextBox box1 = (TextBox) DetailsView1.FindControl("textbox1");
if (box1 != null)
{
box1.Text = preprocess(s);
}
}
}
Its the fragility of
string s=((DataRowView)DetailsView1.DataItem).Row.ItemArray[2].ToString();
that upsets me. I'm sure I am missing something (more than one thing) obvious!
I guess I was hoping to do something more like my ItemUpdating...
e.NewValues["threeline"] = postprocess(e.NewValues["threeline"].ToString());
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
切换到 Asp.Net 4.0+ 并使用
ObjectDataSource
。将
ObjectDataSource.TypeName
设置为数据访问对象Type.FullName
。将
ObjectDataSource.DataObjectTypeName
设置为 DTOType.FullName
。将
ObjectDataSource.SelectMethod
设置为获取IQueryable
的数据访问对象方法。将
DetailsView1.DataSourceID
设置为ObjectDataSource.ID
。将
DetailsView1.ItemType
设置为 DTOType.FullName
。并做这样的事情:
Switch to Asp.Net 4.0+ and use
ObjectDataSource
.Set
ObjectDataSource.TypeName
to the data access objectType.FullName
.Set
ObjectDataSource.DataObjectTypeName
to the DTOType.FullName
.Set
ObjectDataSource.SelectMethod
to the data access object method that get aIQueryable<MyDto>
.Set
DetailsView1.DataSourceID
toObjectDataSource.ID
.Set
DetailsView1.ItemType
to the DTOType.FullName
.And does somthing like this: