2016-06-24 9 views
0

編集:これは、問題が重複しているため、単純なNullReferenceExceptionより複雑です。 オブジェクトリファレンスがオブジェクトのインスタンスに設定されていません(グリッドビューを使用)

これ

は私に問題を与えているコードのビット:

private void BindData() 
{ 
    SqlConnection con = new SqlConnection(Connection.constr); 
    con.Open(); 
    string[] Querys = new string[4]; 
    Querys[0] = "PopulateConstraintTable"; 
    Querys[1] = "PopulateModuleTable"; 
    Querys[2] = "PopulateFeatureTable"; 
    Querys[3] = "PopulateInterfaceTable"; 
    for (int n = 0; n < 4; n++) 
    { 
     SqlCommand cmd = new SqlCommand(Querys[n], con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add("@License", SqlDbType.Int).Value = 20000 + MyGlobals.CurrentOrgID; 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataTable Table = new DataTable(); 
     da.Fill(Table); 
     ((GridView)Page.FindControl("GridView" + (n + 1))).DataSource = Table; 
     ((GridView)Page.FindControl("GridView" + (n + 1))).DataBind(); 
     cmd.ExecuteNonQuery(); 
    } 
    con.Close(); 
} 

このコードは、これらのストアドプロシージャ内の情報と4つの異なるGridviewsを移入する必要がありますが、私はラインでエラーが発生します

((GridView)Page.FindControl("GridView" + (n + 1))).DataSource = Table; 
((GridView)Page.FindControl("GridView" + (n + 1))).DataBind(); 

言うこと:

An exception of type 'System.NullReferenceException' occurred in App_Web_30v1z0on.dll but was not handled in user code 

Additional information: Object reference not set to an instance of an object. 

誰かがwronているものを通して私を歩くことができますどう?ありがとうございました!

EDIT:マークアップ -

<asp:GridView 
    ID="GridView1" 
    runat="server" 
    CellPadding="6" 
    GridLines="Horizontal" 
    Font-Names="Verdana" 
    Font-Size="10pt" 
    DataKeyNames="ConstraintID" 
    AutoGenerateColumns="false" 
    allowpaging="false" 
    Width="730px"> 

    <EditRowStyle BackColor="#999999" /> 
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
    <HeaderStyle BackColor="#5D7B9D" ForeColor="White" HorizontalAlign="Left" Height="25" Font-Bold="True" /> 
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 

    <Columns>...</Columns> 



    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="false" ForeColor="#333333" /> 
    <SortedAscendingCellStyle BackColor="#E9E7E2" /> 
    <SortedAscendingHeaderStyle BackColor="#506C8C" /> 
    <SortedDescendingCellStyle BackColor="#FFFDF8" /> 
    <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> 

    </asp:GridView> 

<asp:GridView 
    ID="GridView2" 
    cellpadding="6" 
    runat="server" 
    GridLines="Horizontal" 
    Font-Names="Verdana" 
    Font-Size="10pt" 
    DataKeyNames="ModuleID" 
    AutoGenerateColumns="False" 
    onrowcancelingedit="GridView2_RowCancelingEdit" 
    onrowediting="GridView2_RowEditing" 
    onrowupdating="GridView2_RowUpdating" 
    Width="730px"> 


    <HeaderStyle BackColor="#336699" ForeColor="White" HorizontalAlign="Left" Height="25" />    

    <Columns>...</Columns> 

</asp:GridView> 


<asp:GridView 
    ID="GridView3" 
    runat="server" 
    CellPadding="6" 
    GridLines="Horizontal" 
    Font-Names="Verdana" 
    Font-Size="10pt" 
    DataKeyNames="FeatureID" 
    AutoGenerateColumns="false" 
    allowpaging="false" 
    onrowcancelingedit="GridView3_RowCancelingEdit" 
    onrowediting="GridView3_RowEditing" 
    onrowupdating="GridView3_RowUpdating" 
    OnRowDataBound="GridView3_RowDataBound" 
    Width="730px"> 

    <EditRowStyle Font-Bold="True" /> 

    <HeaderStyle BackColor="#336699" ForeColor="White" HorizontalAlign="Left" Height="25" /> 

    <Columns>...</Columns> 
</asp:GridView> 



<asp:GridView 
    ID="GridView4" 
    runat="server" 
    CellPadding="6" 
    GridLines="Horizontal" 
    Font-Names="Verdana" 
    Font-Size="10pt" 
    DataKeyNames="InterfaceID" 
    AutoGenerateColumns="false" 
    allowpaging="false" 
    onrowcancelingedit="GridView4_RowCancelingEdit" 
    onrowediting="GridView4_RowEditing" 
    onrowupdating="GridView4_RowUpdating" 
    OnRowDataBound="GridView4_RowDataBound" 
    Width="730px"> 

    <EditRowStyle Font-Bold="True" /> 

    <HeaderStyle BackColor="#336699" ForeColor="White" HorizontalAlign="Left" Height="25" /> 

    <Columns>...</Columns> 
</asp:GridView> 

回答: この記事は、人々は、これが重複したと主張し、私は答えを投稿することはできませんが殺到したかのように見て、私は行きますよ編集ここで答えを置くために解決策が

0123との2つのコードの問題の行を置き換えた

(すべての信用と賞賛は@ConnorsFanわたしも)

+0

グリッドIDを追加する –

+0

あなたのコードで 'cmd.ExecuteNonQuery();'は何をするのですか?また、 "GridView" +(n + 1)を "GridView" +(n + 1).ToString()に変更します。 –

+0

私がアクセスしようとしているグリッドIDはGridView1、GridView2、GridView3、GridView4です。 私は信じることは何もしない。 .ToString()を追加すると、前と同じエラーが返されます。 – JDawg848

答えて

2

これは、我々はそれをチェックするよう

Page.FindControl("GridView" + (n + 1)) 

は、あなたがマークアップを貼り付けることができ、nullです。

+0

あなたは正しいです、デバッグすることによって、私はそれがNULLであることを理解していませんが、NULLであることがわかりました。私を許しますが、マークアップを貼り付けるといいと思いますか? – JDawg848

+2

マークアップは、HTMLおよび.aspx/.cshtmlファイルの要素を記述するために使用される用語です。彼はあなたの.aspxファイルから要素を投稿することを望みます。 –

関連する問題