簡體   English   中英

空異常在代碼背后聲明GridView

[英]Null Exception declaring gridview in codebehind

此問題的部分原因在於將GridView嵌入FormView中並在GridView控件上運行SQL。

GirdView標記:

<asp:GridView ID="gvBFProd" runat="server" ShowFooter="True" AutoGenerateColumns="False" DataKeyNames="BFProdID" DataSourceID="BFProdSQL" OnRowCommand="gvBFProd_RowCommand">
            <Columns>
                <asp:TemplateField ShowHeader="False">
                    <EditItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update" Text="Save"></asp:LinkButton>
                        &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:LinkButton ID="ButtonAdd" runat="server" CommandName="FooterInsert" Text="Insert"  />
                    </FooterTemplate>
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButton>
                        &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
...

代碼背后

private GridView gvBFProd;
    protected void gvBFProd_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        gvBFProd = FormView1.Row.FindControl("gvBFProd") as GridView;

        if (e.CommandName == "FooterInsert" && Page.IsValid)
        {
            // Reference GridView Controls
            TextBox txtBFID = (TextBox)FormView1.Row.FindControl("txtBFID");
            DropDownList ddlSeries =
                (DropDownList)gvBFProd.FooterRow.FindControl("ddlFooterSeries");
            TextBox txtACMWelders =
                (TextBox)gvBFProd.FooterRow.FindControl("txtFooterACMWelders");
....                

// Update InsertParameters
            BFProdSQL.InsertParameters.Clear();

            BFProdSQL.InsertParameters.Add("BFID", txtBFID.Text);
            BFProdSQL.InsertParameters.Add("SeriesID", ddlSeries.SelectedValue);
            BFProdSQL.InsertParameters.Add("NumACMWelders", txtACMWelders.Text);
...         


// Insert new record
            BFProdSQL.Insert();
        }
    }

初始private GridView gvBFProd; 由於已嵌入FormView,因此有必要為GridView控件引用提供上下文。 但是,或者某些事情沒有正確通過,或者我還需要對private GridView gvBFProd;做更多的事情private GridView gvBFProd; 線。 我在考慮后者,因為一旦構建項目,我就會在gvBFProd下彎彎曲曲地看到綠色,表示該字段從未分配給該字段,並且默認值始終為null。 當然,當我單擊“插入鏈接按鈕”時,我收到一個未處理的Null Exception錯誤,該錯誤在(DropdownList)gvBFProd.FooterRow....行處中斷。

我是否需要為gvBFProd構建獲取/設置功能,或者是否有其他方法傳遞GridView?

找到是什么原因導致了原始Null Exception錯誤。 我在后面的代碼中缺少gvBFProd的定義。

特別:

private GridView gvBFProd;
    protected void gvBFProd_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        gvBFProd = FormView1.Row.FindControl("gvBFProd") as GridView;
....

現在,我的下拉列表中出現了另一個“空引用異常”,但這是一個不同的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM