DetailsView 如何插入一条记录到一个空表中???

goodhy 2006-11-03 11:54:13
我用到一个DetailsView 控件实现新增功能。利用DetailsView的 AutoGenerateRows=true 自动产生行的属性!也就是我给定SQL语句到datasources,那么DetailsView将自动产生行。
现在的问题是如果给定的SQL有返回结果,那么DetailsView正常工作,
如果SQL没有返回结果,DetailsView就无法呈现了?
例如:select * from authors where au_id = 'paul' ,DetailView正常工作
select * from authors where 1 = 2 ,DetailView无法呈现

同样的问题,如果一个table里最开始没有数据,那么DetailsView根本就没有办法插入数据,因为DetailsView没有办法呈现出来!!

请教高手,该如何解决这个问题呢?
...全文
398 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodhy 2006-11-04
  • 打赏
  • 举报
回复
ok,thanks
jun-2013 2006-11-04
  • 打赏
  • 举报
回复
用这个变通的方法也可以实现,有数据时显示,没有时插入。如果你用数据源控件就没有这么灵活了。

SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=;database=northwind");
SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Orders WHERE (OrderID = 0)", conn);

DataSet ds = new DataSet();

sda.Fill(ds,"TB");

if (ds.Tables["TB"].Rows.Count == 0)
{
sda.SelectCommand =new SqlCommand("SELECT top 1 * FROM Orders ",conn); //显示用
sda.Fill(ds, "TB");
this.DetailsView1.DataSource = ds.Tables["TB"];
this.DetailsView1.DefaultMode = DetailsViewMode.Insert;
}
else
{
this.DetailsView1.DefaultMode = DetailsViewMode.ReadOnly;
this.DetailsView1.DataSource = ds.Tables["TB"];
}

this.DetailsView1.DataBind();
jun-2013 2006-11-04
  • 打赏
  • 举报
回复
<EmptyDataTemplate>

那你就设一下 EmptyDataTemplate 也可以让他显示的
goodhy 2006-11-04
  • 打赏
  • 举报
回复
如果我用sqldatasource,那又该怎么做呢?
goodhy 2006-11-04
  • 打赏
  • 举报
回复
good idea,let me try. thank you!
jun-2013 2006-11-04
  • 打赏
  • 举报
回复
把用DataSet返回的数据。然后在绑定前判断一下dt.Tables[0].Rows.Count如果=0则人工添加一行到Table,这样GridView就会显示了。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧