0

我在一页上有多个网格视图。对于每个gridview,有两种方法可以插入一条新记录。一种是在gridview 有数据时通过TemplateField 的FooterTemplate,另一种是在gridview 为空时通过EmptyDataTemplate。

就其本身而言,插入物工作良好。但是,如果另一个 gridview 为空,则默认情况下,将显示其 EmptyDataTemplate 中的插入部分。显示此内容时,我无法显示另一个 gridview 的 FooterTemplate。在我通过强制插入摆脱 EmptyDataTemplate 之前,该部分是不可访问的。

<asp:Button ID="btnAddNewDomSoilType" runat="server" Text="Add new record"  CssClass="btnNewRecord" OnClick="addNewDomSoilType" />              
<asp:GridView ID="gvDomSoilType" runat="server" AllowPaging="True" 
AutoGenerateColumns="False" DataSourceID="dsDomSoilType" CssClass="data" 
AllowSorting="True" onrowcommand="gvDomSoilType_RowCommand" DataKeyNames="HabitatObsSubstrateID, HabitatObservationID, SubstrateID" >
    <Columns>                        
    <asp:TemplateField ShowHeader="False">                            
        <ItemTemplate>
            <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" 
                CommandName="Delete" Text="Delete" 
                OnClientClick="return confirm('Are you sure?');"
                AlternateText="Delete" ForeColor="Blue"></asp:LinkButton>
        </ItemTemplate>
        <FooterTemplate>
            <asp:Button ID="btnInsertSubmit" runat="server" Text="Submit" CommandName="SubmitInsert" CssClass="btnInsertSEID" />
            <asp:Button ID="btnInsertCancel" runat="server" Text="Cancel" CommandName="CancelInsert" CssClass="btnInsertSEID" CausesValidation="false" />
        </FooterTemplate>
    </asp:TemplateField>                        
    <asp:TemplateField HeaderText="Substrate" SortExpression="Substrate">
        <FooterTemplate>
            <asp:DropDownList ID="ddlSoilType" runat="server" 
                DataSourceID="dsDomSoilType_Insert" DataTextField="Description" 
                DataValueField="Value" AppendDataBoundItems="true">
                <asp:ListItem Text="" Value="" Selected="True"></asp:ListItem>
            </asp:DropDownList>                          
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Substrate") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    </Columns>
    <EmptyDataTemplate>
    <asp:Label ID="Label4" runat="server" Text="Substrate: " CssClass="insertLabel"></asp:Label> 
    <asp:DropDownList ID="ddlSoilType2" runat="server" 
        DataSourceID="dsDomSoilType_Insert" DataTextField="Description" 
        DataValueField="Value" AppendDataBoundItems="true">
        <asp:ListItem Text="" Value="" Selected="True"></asp:ListItem>
    </asp:DropDownList>
    <asp:Button ID="btnInsertEmpty" runat="Server" Text="Insert" CommandName="EmptyInsert" UseSubmitBehavior="False" />
</EmptyDataTemplate>
</asp:GridView>    

<asp:Button ID="btnAddNewVegCover" runat="server" Text="Add new record"  CssClass="btnNewRecord" OnClick="addNewVegCover" />
<asp:GridView ID="gvVegCover" runat="server" AllowPaging="True" 
AutoGenerateColumns="False" DataSourceID="dsVegCover" CssClass="data" 
AllowSorting="True" onrowcommand="gvVegCover_RowCommand" DataKeyNames="HabitatObsVegID">
    <Columns>
    <asp:TemplateField ShowHeader="False">                           
        <ItemTemplate>
            <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" 
                CommandName="Delete" Text="Delete" 
                OnClientClick="return confirm('Are you sure?');"
                AlternateText="Delete" ForeColor="Blue"></asp:LinkButton>
        </ItemTemplate>
        <FooterTemplate>
            <asp:Button ID="btnInsertSubmit" runat="server" Text="Submit" CommandName="SubmitInsert" CssClass="btnInsertSEID" />
            <asp:Button ID="btnInsertCancel" runat="server" Text="Cancel" CommandName="CancelInsert" CssClass="btnInsertSEID" CausesValidation="false" />
        </FooterTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="HabitatVegetationType" SortExpression="HabitatVegetationType">                            
        <FooterTemplate>
            <asp:DropDownList ID="ddlVegType" runat="server" 
                DataSourceID="dsVegType_Insert" DataTextField="Description" 
                DataValueField="Value" AppendDataBoundItems="true">
                <asp:ListItem Text="" Value="" Selected="True"></asp:ListItem>
            </asp:DropDownList>                                 
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="lblVegType" runat="server" Text='<%# Bind("HabitatVegetationType") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="VegetationTypePercent" SortExpression="VegetationTypePercent">                            
        <FooterTemplate>                                    
            <asp:TextBox ID="txtVegTypePercent" runat="server"></asp:TextBox>               
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="lblVegTypePercentage" runat="server" Text='<%# Bind("VegetationTypePercent") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>                                                     
    </Columns>
    <EmptyDataTemplate>
    <asp:Label ID="Label2" runat="server" Text="Vegetation Type:" CssClass="insertLabel"></asp:Label>  
    <asp:DropDownList ID="ddlVegType2" runat="server" 
        DataSourceID="dsVegType_Insert" DataTextField="Description" 
        DataValueField="Value" AppendDataBoundItems="true">
        <asp:ListItem Text="" Value="" Selected="True"></asp:ListItem>
    </asp:DropDownList>
    <asp:Label ID="Label5" runat="server" Text="Percenttage:" CssClass="insertLabel"></asp:Label>
    <asp:TextBox ID="txtVegTypePercent2" runat="server"></asp:TextBox>      
    <asp:Button ID="btnInsertEmpty" runat="Server" Text="Insert" CommandName="EmptyInsert" UseSubmitBehavior="False" />
    </EmptyDataTemplate>        
</asp:GridView>

后面的代码:

    protected void addNewDomSoilType(object sender, EventArgs e)
    {
        gvDomSoilType.ShowFooter = true;
    }

    protected void addNewVegCover(object sender, EventArgs e)
    {
        gvVegCover.ShowFooter = true;
    }

我知道我的解释有点混乱。让我知道什么没有意义,我会尽力澄清。感谢您的关注。

4

1 回答 1

0

这两个网格视图不应相互影响。我认为可能是 PostBack 搞砸了网页的状态。在 PageLoad 上执行 Page.IsPostBack false 然后填充数据。确保事件连接到正确的 GridView。

于 2012-10-12T00:01:37.020 回答