GRIDVIEW里嵌套一个DetailsView,DetailsView是放在EmptyDataTemplate里面,我主要是想利用DetailsView来添加记录仅此而已。当点击GRIDVIEW里的添加链接就会链接到DetailsView,现在有一个问题,当我添加记录点击‘更新’出发DetailsView1_ItemInserting事件时如何获取DetailsView里模板的某一个控件的值?
前台代码如下:<asp:GridView ID="GVResult" > <AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="Corse_Id" HeaderText="序号" ReadOnly="True" >
<HeaderStyle Width="30px" />
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="Corse_Name" HeaderText="课程名称" >
<ControlStyle Font-Size="12px" Width="350px" />
</asp:BoundField>
<asp:TemplateField HeaderText="操作" ShowHeader="False">
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
CommandName="Update" Text="更新"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Cancel" Text="取消"></asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
CommandName="Edit" Text="编辑"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Delete" onclientclick=" javascript:return confirm('你确认要删除吗?')"
Text="删除"></asp:LinkButton>
<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False"
CommandName="Insert" Text="添加"></asp:LinkButton>
</ItemTemplate>
<HeaderStyle Width="90px" />
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
</Columns> <EditRowStyle BackColor="#66CCFF" />
<EmptyDataTemplate>
<asp:DetailsView ID="DetailsView1" runat="server"
DefaultMode="Insert" HeaderText="添加课程" oniteminserting="DetailsView1_ItemInserting">
<Fields>
<asp:TemplateField HeaderText="Name">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" DataField="Corse_Name"></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Fields>
<HeaderStyle/>
</asp:DetailsView>
</EmptyDataTemplate>
<FooterStyle Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#CCCCFF" Font-Bold="False" Font-Size="12px"
Height="30px" />
<PagerStyle BackColor="#CCCCFF" ForeColor="Red" HorizontalAlign="Right"
Font-Size="12px" Font-Strikeout="False" Font-Underline="True" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
</asp:GridView>后台代码://获取GRIDVIEW控件里的DetailsView控件。
DetailsView dv; protected void GVResult_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.EmptyDataRow)
{
dv = e.Row.FindControl("DetailsView1") as DetailsView;
} }//获取DetailsView控件里的TextBox1控件。这个地方出了错,提示“未将对象引用设置到对象的实例”
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
string name = ((TextBox)dv.FindControl("TextBox1")).Text.ToString().Trim();
}请各位帮我看看?谢谢。
前台代码如下:<asp:GridView ID="GVResult" > <AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="Corse_Id" HeaderText="序号" ReadOnly="True" >
<HeaderStyle Width="30px" />
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="Corse_Name" HeaderText="课程名称" >
<ControlStyle Font-Size="12px" Width="350px" />
</asp:BoundField>
<asp:TemplateField HeaderText="操作" ShowHeader="False">
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
CommandName="Update" Text="更新"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Cancel" Text="取消"></asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
CommandName="Edit" Text="编辑"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Delete" onclientclick=" javascript:return confirm('你确认要删除吗?')"
Text="删除"></asp:LinkButton>
<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False"
CommandName="Insert" Text="添加"></asp:LinkButton>
</ItemTemplate>
<HeaderStyle Width="90px" />
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
</Columns> <EditRowStyle BackColor="#66CCFF" />
<EmptyDataTemplate>
<asp:DetailsView ID="DetailsView1" runat="server"
DefaultMode="Insert" HeaderText="添加课程" oniteminserting="DetailsView1_ItemInserting">
<Fields>
<asp:TemplateField HeaderText="Name">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" DataField="Corse_Name"></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Fields>
<HeaderStyle/>
</asp:DetailsView>
</EmptyDataTemplate>
<FooterStyle Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#CCCCFF" Font-Bold="False" Font-Size="12px"
Height="30px" />
<PagerStyle BackColor="#CCCCFF" ForeColor="Red" HorizontalAlign="Right"
Font-Size="12px" Font-Strikeout="False" Font-Underline="True" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
</asp:GridView>后台代码://获取GRIDVIEW控件里的DetailsView控件。
DetailsView dv; protected void GVResult_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.EmptyDataRow)
{
dv = e.Row.FindControl("DetailsView1") as DetailsView;
} }//获取DetailsView控件里的TextBox1控件。这个地方出了错,提示“未将对象引用设置到对象的实例”
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
string name = ((TextBox)dv.FindControl("TextBox1")).Text.ToString().Trim();
}请各位帮我看看?谢谢。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货