我在一个gridview里的 <EmptyDataTemplate></EmptyDataTemplate>里放了一个detailview 用来添加新数据
我想在后台*.aspx.cs文件中设置detailview的数据源 (没有用数据源控件)
可是获取不到detailview的ID
只能获取到gridview的的id
后来通过设置DataSource="<%# %>" 解决了
后来又碰到了问题 是这样的:
我想在下面的方法中获取detailview编辑框的值 以便插入数据库 不知道如何获取
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
}
请大家指教 谢谢
解决方案 »
- 如何使用ado.net实现oracle的大量数据插入
- 如何实现分布式事务处理???
- 动态绑定数据的gridview怎么把某列变成超链接的形式?
- 请问为什么登陆后Profile.IsAnonymous都一直为TRUE??
- sql上查询的结果为什么用DataSet读取之后结果不一样??在线等====
- 关于验证控件的问题,验证失败的时候显示ErrorMessage,那么验证成功后可以显示"通过"的字样吗?
- vs2005+sql2005开发web程序的书籍,最好是用多层开发的那种,有吗?
- 网站发布问题??
- 怎样把ListBox里面的多项循环写入数据库!
- 多线程的问题
- sql 2000 server+visaul studio 2005如何开发reporting services报表呢?
- 母版页与用户控件的引用问题
string param2 = ((TextBox)DetailsView1.Rows[e.RowIndex].FindControl("TextBox2")).Text;
关键是获取不到DetailsView1 因为把它嵌套在gridview中
理论上不需要在插入的时候写代码的。 实体类的话,是需要有个插入的方法,如果是SqlDataSource的话,需要一个插入的存储过程。如果你非要控制插入的时候获取数据的话,可以采用:System.Collections.Specialized.IOrderedDictionary keyVaules = e.Values;keyVaules 里面有Key的Collection和Value的Collection可以分别获取到
param2= ((DetailsView1)WaterGridView1.Rows[e.RowIndex].FindControl("DetailsView1")).Items[1].text;
你试试这个方法
只是个例子 你可以在后面通过 子项 或索引 找到 相应的行
我觉的不那样的话 分层好像没啥意义了
我尝试了使用datakeynames 但用e.Values获取不到 你QQ多少啊
GridLines="None" style="font-size: 12px; text-align: center;" AllowSorting="True" AutoGenerateColumns="False"
DataKeyNames="newsType_id" PageSize="5" OnRowDataBound="GridView1_RowDataBound"
OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" Height="91px" OnRowCommand="GridView1_RowCommand"
>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:BoundField DataField="newsType_id" HeaderText="编号" InsertVisible="False" ReadOnly="True"
/>
<asp:BoundField DataField="newsType_name" HeaderText="新闻类别" />
<asp:BoundField DataField="newsType_total" HeaderText="新闻总数" />
<asp:CommandField HeaderText="操作" ShowDeleteButton="True" ShowEditButton="True" InsertVisible="False" >
<HeaderStyle HorizontalAlign="Right" />
<ItemStyle HorizontalAlign="Right" />
</asp:CommandField>
<asp:ButtonField CommandName="Insert" Text="插入" >
<HeaderStyle HorizontalAlign="Right" />
<ItemStyle HorizontalAlign="Left" />
</asp:ButtonField>
</Columns>
<EmptyDataTemplate>
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DefaultMode="Insert"
Height="50px" Width="241px" DataSource="<%# getDataSet() %>"
OnItemInserted="DetailsView1_ItemInserted" OnItemInserting="DetailsView1_ItemInserting"
datakeynames="newsType_name"
>
<Fields>
<asp:BoundField DataField="newsType_name" HeaderText="新闻类别名称" />
<asp:BoundField DataField="newsType_total" HeaderText="新闻总数" />
<asp:CommandField ShowInsertButton="True" HeaderText="操作" ShowHeader="True" />
</Fields>
</asp:DetailsView>
</EmptyDataTemplate>
</asp:GridView>
在protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e) {}里
测试GridView1.Rows.Count <1
string param2 = ((TextBox)DetailsView1.Rows[e.RowIndex].FindControl("TextBox2")).Text;
http://hi.baidu.com/dangzhang/blog/item/de9db2455e8f3323cffca3e1.html
===============================================================================
这是不是说<Columns>和<EmptyDataTemplate>是并列的,只能存在一个?
如果是的话,DetailsView1是不是只会出现在第0行?
DetailsView dvTmp = GridView1.Rows[0].FindControl("DetailsView1") as DetailsView;其实,插入一条记录的方法很多,就像12楼所说,数据库不空时就不需要插入数据了吗?
我个人认为,还是把DetailsView放外面好,你说的那篇文章只是提供一种对待查不出数据的方法,具体怎么实现还是要看具体情况
{
DetailsView DetailsView1 = sender as DetailsView;
//使用DetailsView1 做你下面的操作
}
应该是这样的:
===============================================================================
GridView控件提供了一个被称作Empty Data Template的模板。 当GridView里没有数据显示的时候这个模板就会显示出来。 一般在没有数据显示的时候,这个模板会被用于显示一个给出示给用户的状态信息。 但是,你也可以为了别的目的而是用它。 本例中,你将使用它来给GridView增加新的记录。===============================================================================我还想这样做 看行不行 不知道有没有解决办法