前台:
<ItemTemplate>
<asp:DropDownList ID="ddlTransaction" Runat="server"></asp:DropDownList>
</ItemTemplate>后台:
private void DataGrid1_ItemCreated(object .WebControls.DataGridItemEventArgs e)
{
ArrayList ddlDataSource=new ArrayList();
ddlDataSource.Add("処理なし");
ddlDataSource.Add("登録");
ddlDataSource.Add("更新");
ddlDataSource.Add("削除");
DropDownList ddl=  (DropDownList).Item.FindControl("ddlTransaction");                            ddl.DataSource=ddlDataSource;
ddl.DataBind();
}
报错:Exception Details: System.NullReferenceException: Object reference not set to an instance of an object
这是怎么回事啊??希望各位大虾不吝赐教!!谢谢!!!!!!!!!!

解决方案 »

  1.   

    datagrid绑定DropDownList例子 
    http://dotnet.aspx.cc/article/c81ad80e-fc14-4ff8-85f3-16cc68811bd5/read.aspx
      

  2.   

    DataGrid的在ItemCreated的时候默认的e.ItemIndex好像是-1,必须从0开始才会有项目,所以加上这个判断,应当可以解决!
      

  3.   

    aspx:
    <EditItemTemplate>
                                            <asp:DropDownList ID="DropDownListRole" runat="server" DataValueField="RoleId" DataTextField="RoleName" DataSource="<%#BindUserRole()%>">
                                            </asp:DropDownList>
                                        </EditItemTemplate>cs:
            public DataView BindUserRole()
            {
                return myRoles.GetDataSet().Tables[0].DefaultView;
            }
      

  4.   

    对于事件ItemCreated来说,数据行中单元格的控件是在此事件后生成的,所以您使用DropDownList ddl=  (DropDownList).Item.FindControl("ddlTransaction");
    无法得到此控件。
    可以使用DataItemBound事件试试
      

  5.   

    你需要在你的private void DataGrid1_ItemCreated(object .WebControls.DataGridItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item)
        {
            将你的代码放到这里就可以了,因为要判断数据行时。
         }
    }
      

  6.   

    哦  谢谢 不过我不是想模仿 只是在生成的 datagrid 中的  每个纪录 中 控件  dropdownlist 下拉显示  処理なし  登録  等内容。
      

  7.   

    for(i=1;i<DataGrid1.items.count;i++)
    {
    DropDownList ddl=  (DropDownList).Item[i].FindControl("ddlTransaction");
    ddl.DataSource=ddlDataSource;
    ddl.DataBind();
    }
      

  8.   

    我用的   if(e.Item.ItemType==ListItemType.Item)
    判断绑定的  怎么在datagrid 显示的 纪录中 是  每隔一个记录 绑定的呀????
    (就是说  1 3 5 。。纪录  中的 dropdownlist 已经 能过正常绑定显示了  但2 4 6 。。纪录显示的空  没有绑定阿) 谢谢!!大家!!!!!!
      

  9.   

    HOHO^_^
    问题解决了  非常感谢大家的帮助,谢谢!!!!!!!
    我用的是
    if((e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)) {
    ArrayList ddlDataSource=new ArrayList();
    ddlDataSource.Add("処理なし");
    ddlDataSource.Add("登録");
    ddlDataSource.Add("更新");
    ddlDataSource.Add("削除");
                                 }进行的判断  
    结果 datagrid 中的所有纪录中的  dropdownlist 都进行了绑定了  但我还不知道为什么 ??大家有知道的麻烦恢复下,在下不胜感激。再次对大家的帮助表示感谢!!!!!