DataGrid嵌套DataList更改数据报“未将对象引用设置到对象的实例”错误?
我用DataGrid嵌套DataList的方法做了一个父子关系的列表,想支持编辑,页代码如:
<asp:DataGrid Width="80%" ID="dgPostList" runat="server" AllowPaging=True PageSize=3 AutoGenerateColumns=false OnPageIndexChanged="TrunPage">
<columns>
<asp:TemplateColumn>
<itemtemplate>
....................
<asp:DataList ID="dlReplyList" Width="100%" RepeatColumns=1 RepeatDirection=Vertical runat="server" OnEditCommand="EditReply" DataSource='<%# GetReplyData((int)DataBinder.Eval(Container.DataItem, "PostID"))%>'>
<itemtemplate>
..................
<asp:ImageButton runat="server" ID="imgbtEdit2" CommandName="edit" ImageUrl="images/edit.gif" AlternateText="编辑"></asp:ImageButton>
<asp:ImageButton runat="server" ID="imgbtDelete2" CommandName="delete" ImageUrl="images/del.gif" AlternateText="删除"></asp:ImageButton>
....................
</itemtemplate>
<EditItemTemplate>
................
<asp:ImageButton runat="server" ID="imgbtSave" CommandName="update" ImageUrl="images/save.jpg" AlternateText="保存"></asp:ImageButton>
<asp:ImageButton runat="server" ID="imgbtCancel" CommandName="cancel" ImageUrl="images/del.gif" AlternateText="取消"></asp:ImageButton>
...................
</EditItemTemplate>
</asp:DataList>
</itemtemplate>
</asp:TemplateColumn>
</columns>
</asp:DataGrid>
在触发datalist的OnEditCommand时报错,后台代码:
行 49: }
行 50: protected void EditReply(object sender, System.Web.UI.WebControls.DataListCommandEventArgs e){
行 51: dlReplyList.EditItemIndex = e.Item.ItemIndex;
行 52: this.bind();
行 53: }
好像报找不到DataList对象实例。
不知道为什么会这样,我的页面可能会有多个datalist,因为我的DataGrid的每一条记录都可能有子记录的。是这个原因。谢谢讨论了。