可折叠面板扩展器 [英] Collapsible panel extender
问题描述
我在过去几天里一直在网上找到一种方法来解决我的问题,很多人用不同的方式对我的方式做了但是我需要保持我的项目运行相同
我正在使用Visual Studio 2008,带有AJAX的SQL Server 2008和C#
我是有一个网格,它返回数据作为累积总数,它都没有问题,附加了一个可折叠的面板扩展器和另一个网格显示子元素,这是我有困难,因为我看不到第二个gridview。
当得到以下内容时,我收到错误对象未设置为对象的实例
((GridView)FindControl (GridView2)。DataSource = reader1;
任何最受赞赏的帮助,下面的代码,由于内容的原因,它必须排在最前面和后面。
我尝试过:
< asp:ScriptManager ID =ScriptManager1runat = server>
< asp:GridView ID =GridView1runat =serverAutoGenerateColumns =FalseDataKeyNames =EmplIDCellPadding =4ForeColor =#333333GridLines =无宽度=700pxonrowcommand =GridView1_RowCommand
onrowediting =GridView1_RowEditing>
< rowstyle backcolor =#EFF3FB>
< columns>< asp:BoundField DataField =EmpIDHeaderText =EmpIDInsertVisible =FalseReadOnly =TrueSortExpression =EmpIDVisible =False/>
< asp:TemplateField HeaderText =Project /订单SortExpression =linknumberHeaderStyle-HorizontalAlign =Center>
< itemtemplate>
< asp:LinkButton ID =LinkButton1runat =server Text ='<%#Bind(EmpID)%>'>
< cc1:CollapsiblePanelExtender ID =CollapsiblePanelExtender1runat =服务器
TargetControlID =Panel1CollapsedSize =0
Collapsed =trueExpandControlID =LinkButton1CollapseControlID =LinkButton1
AutoCollapse =falseAutoExpand =false
ScrollContents =trueExpandDirection =Vertical>
< ; asp:Panel ID =Panel1runat =server>
< asp:GridView ID =GridView2runat =serverAutoGenerateColumns =FalseDataKeyNames =EmpID> ;
< columns& GT; < asp:TemplateField HeaderText =EmpID>
< itemtemplate>
< asp:Label ID =lblAbIDrunat =serverText =' <%#Bind(AbID)%>'>
< itemstyle width =50pxhorizontalalign =Center>
< asp:TemplateField HeaderText =EmpID>
< itemtemplate>
< asp:Label ID =lblEmpIDDrunat =serverText ='<%#Bind(Date,{0:dd / MM / yyyy})%>'>
< itemstyle width =50pxhorizontalalign =中心>
< HeaderStyle HorizontalAlign =Center>< / HeaderStyle>
< asp:TemplateField HeaderText =EmpID >
< itemtemplate>
< asp:Label ID =lblEmpIDrunat =serverText ='<%#Bind(EmpID )%>'>
< itemstyle width =50pxhorizontalalign =Center>
< asp:TemplateField HeaderText =SerNo>
< itemtemplate>
< asp:Label ID =lblESerNoIDrunat =server Text ='<%#Bind(SerNo)%>'>
< itemstyle width =100pxhorizontalalign =Center> ;
C#代码
protected void GridView1_RowCommand(object sender,GridViewCommandEventArgs e)
{
T ry
{
SQLQueryDD =选择e.EmployeeID,e.SerNo来自tbl_Emp e,其中e.EmpID = 12;
FullStringDD = SQLQueryDD;
SqlCommand cmd = new SqlCommand(FullStringDD,connAMP);
connAMP.Open() ;
GridViewRow row =(GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
reader1 = cmd.ExecuteReader( );
((GridView)FindControl(GridView2))。DataSource = reader1;
((GridView)FindControl(GridView2))。DataBind();
connAMP.Close();
}
catch(例外情况)
{
}
}
I have trawled the net over the last couple of days to find a way of solving my issue, quite a few have done it a different way to the way I've done it but I need to keep my project running the same
I'm using Visual Studio 2008, SQL Server 2008 with AJAX and C#
I've got a grid which is returning data as a cumulative total, it all works without an issue, have attached a collapsible panel extender and another grid to display sub elements, this is where I'm having difficulty as I cannot see the second gridview.
When it gets to the following I get an error "Object not set to an instance of an object"
((GridView)FindControl("GridView2)).DataSource = reader1;
Any assistance most appreciated, code below, have had to top and tail it due to content
What I have tried:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmplID" CellPadding="4" ForeColor="#333333" GridLines="None" Width="700px" onrowcommand="GridView1_RowCommand"
onrowediting="GridView1_RowEditing">
<rowstyle backcolor="#EFF3FB">
<columns> <asp:BoundField DataField="EmpID" HeaderText="EmpID" InsertVisible="False" ReadOnly="True" SortExpression="EmpID" Visible="False" />
<asp:TemplateField HeaderText="Project/Order" SortExpression="linknumber" HeaderStyle-HorizontalAlign="Center">
<itemtemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Bind("EmpID") %>'>
<cc1:CollapsiblePanelExtender ID="CollapsiblePanelExtender1" runat="server"
TargetControlID="Panel1" CollapsedSize="0"
Collapsed="true" ExpandControlID="LinkButton1" CollapseControlID="LinkButton1"
AutoCollapse="false" AutoExpand="false"
ScrollContents="true" ExpandDirection="Vertical">
<asp:Panel ID="Panel1" runat="server">
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="EmpID">
<columns> <asp:TemplateField HeaderText="EmpID">
<itemtemplate>
<asp:Label ID="lblAbID" runat="server" Text='<%# Bind("AbID") %>'>
<itemstyle width="50px" horizontalalign="Center">
<asp:TemplateField HeaderText="EmpID">
<itemtemplate>
<asp:Label ID="lblEmpIDD" runat="server" Text='<%# Bind("Date","{0:dd/MM/yyyy}") %>'>
<itemstyle width="50px" horizontalalign="Center">
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<asp:TemplateField HeaderText="EmpID">
<itemtemplate>
<asp:Label ID="lblEmpID" runat="server" Text='<%# Bind("EmpID") %>'>
<itemstyle width="50px" horizontalalign="Center">
<asp:TemplateField HeaderText="SerNo">
<itemtemplate>
<asp:Label ID="lblESerNoID" runat="server" Text='<%# Bind("SerNo") %>'>
<itemstyle width="100px" horizontalalign="Center">
C# Code
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
SQLQueryDD = "select e.EmployeeID, e.SerNo from tbl_Emp e where e.EmpID = 12";
FullStringDD = SQLQueryDD;
SqlCommand cmd = new SqlCommand(FullStringDD, connAMP);
connAMP.Open();
GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
reader1 = cmd.ExecuteReader();
((GridView)FindControl("GridView2")).DataSource = reader1;
((GridView)FindControl("GridView2")).DataBind();
connAMP.Close();
}
catch (Exception ex)
{
}
}
推荐答案
破解它
Cracked it
reader1 = cmd.ExecuteReader();
GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
int i = row.RowIndex;
GridView GridView2 = row.FindControl("GridView2") as GridView;
GridView2.DataSource = reader1;
GridView2.DataBind();
这篇关于可折叠面板扩展器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!