2017-09-15 5 views
0

私はTelerik RadGridを使用しており、以下のASPコードに示すようにEditItemTemplateを使用しています。私はこのC#コードでEntity Frameworkのを使用して、ドロップダウン移入しようとしていますこのASPコントロールにアクセスできない理由

<telerik:GridTemplateColumn UniqueName="TemplateColumn" HeaderText="Role"> 
      <ItemTemplate> 
       <asp:Label ID="lblRole" runat="server" 
        Text='<%# DataBinder.Eval(Container.DataItem, "Role") %>'> 
       </asp:Label> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:DropDownList ID="ddl1" runat="server" UniqueName="Roles"/> 
      </EditItemTemplate> 
     </telerik:GridTemplateColumn 

:「オブジェクト参照オブジェクトのインスタンスに設定されていない」

protected void gvMembers_ItemDataBound(object sender, GridItemEventArgs e) 
    { 
     var roles = (from c in DbContext.roles 
        select new { c.Role1, c.RoleID }).ToList(); 
     GridEditableItem item = e.Item as GridEditableItem; 

     //// access/modify the edit item template settings here 
     DropDownList list = item.FindControl("Roles") as DropDownList; 
     list.DataTextField = "Role1"; 
     list.DataValueField = "RoleID"; 
     list.DataBind(); 

    } 

私は取得していますが私はプログラミングに比較的新しいので、私はこのエラーメッセージに困惑しています。私には、私はそのロールコントロールを見つけることができません。私は同じ結果を得るコントロールIDを使用しようとしました。私はこの問題を解決しようと多くの時間を費やしてきたので、これを助けてくれれば幸いです。

+0

の可能性のある重複して[とNullReferenceExceptionある、と私はそれをどのように修正すればよいか?]である(https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and -how-do-i-fix-it) –

+0

どの行にエラーが表示されますか? –

+0

@EmptyWaterHoles DropDownListで始まる行にエラーメッセージが表示されます。 – Perry

答えて

0

あなたはこのメソッドの送信者として何を持っているのか分かりません。 しかし、それはボタンだった場合たとえば、あなたは、この行

Button item = (Button) sender; 

と、この行とこの行

DropDownList list = item.FindControl("Roles") as DropDownList; 

で、このライン

GridEditableItem item = e.Item as GridEditableItem; 

を置き換えることができ

DropDownList list = item.NamingContainer.FindControl("Roles") as DropDownList; 

itemあなたは今まで、私はこの問題を考え出した方法

+0

送信者は、giridviewのレンダリング中に発生するItemDataBoundです。コードをあなたが推奨したものに変更しましたが、同じエラーメッセージが表示されました – Perry

0

を呼んでいるものと置換ボタンを.FindControl

でそれを使用することはできませんnullであるため。問題は、コードが間違った時間に実行されていたことでした。アイテムがeditmodeのときにのみ使用できるEditItemTemplateのコントロールにアクセスしようとしていました。モードを確認するためにコードを変更した後、現在は動作します。ここでは修正されたコード

protected void gvMembers_ItemDataBound(object sender, GridItemEventArgs e) 
    { 

     if (e.Item is GridEditableItem && e.Item.IsInEditMode) 
     { 
      var roles = (from c in DbContext.roles 
         select new { c.Role1, c.RoleID }).ToList(); 
      GridEditableItem item = e.Item as GridEditableItem; 
      // access/modify the edit item template settings here 
      DropDownList list = item.FindControl("List1") as DropDownList; 
      list.DataSource = roles; 
      list.DataBind(); 
     } 

    } 
関連する問題