[英]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>
<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>
<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.