DataList 嵌套Datagrid ,散分

NSympathizeFO 2006-08-15 10:22:55
我今天用datalist 嵌套datagrid 写一段程序.
前台代码是这样的:
<asp:Panel ID="pnlModuleContent" Runat="server">
<table width="100%" border="0">
<tr>
<td style="width: 215px">
<asp:Label id="Label5" Runat="server" resourcekey="RecordsPage" CssClass="SubHead">Records Per Page:</asp:Label>
<asp:DropDownList id="ddlRecordsPerPage" Runat="server" AutoPostBack="True">
<asp:ListItem Value="10">10</asp:ListItem>
<asp:ListItem Value="25">25</asp:ListItem>
<asp:ListItem Value="50">50</asp:ListItem>
<asp:ListItem Value="100">100</asp:ListItem>
<asp:ListItem Value="250">250</asp:ListItem>
</asp:DropDownList></td>
<!--<td><dnnsc:PagingControl id="ctlPagingControl" runat="server"></dnnsc:PagingControl></TD> -->
</tr>
<tr>
<td style="width: 215px">
<asp:datalist id="dlComments" runat="server" HorizontalAlign="Center" RepeatColumns="1" OnItemDataBound ="dlComments_ItemDataBound1">
<ItemTemplate>
<table border="0">
<tr>
<td colspan="2">
<asp:label id="lblFeedbackID" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "FeedbackID") %>' Visible="False">
</asp:label><br></td>
<td>
<asp:label id="lblAuthor" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CreatedByEmail") %>' CssClass="head">
</asp:label>  
</td>
<td>
<asp:label id="lblMessage" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Message") %>' CssClass="Normal">
</asp:label>
</td>
<td>
<asp:label id="lblDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "DateCreated") %>' CssClass="subhead">
</asp:label>
</td>
</tr>
<tr>
<table>
<tr>
<td>
<asp:datagrid ID="dgComments" runat="server" AutoGenerateColumns ="False" AllowSorting="true" HorizontalAlign="center">
<Columns>
<asp:TemplateColumn HeaderStyle-HorizontalAlign="Left" HeaderText="Email" SortExpression="CreatedByEmail">
<ItemTemplate>
<%#DataBinder.Eval(Container, "DataItem.CreatedByEmail")%>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderStyle-HorizontalAlign="Left" HeaderText="Message">
<ItemTemplate>
<%#DataBinder.Eval(Container, "DataItem.Message")%>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderStyle-HorizontalAlign="Left" HeaderText="Date" SortExpression="DateModified">
<ItemTemplate>
<%#DataBinder.Eval(Container, "DataItem.DateCreated")%>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
</td>
</tr>
</table>
</tr>
</table>
<!--<hr width="100%" size="1">-->
</ItemTemplate>
</asp:datalist>
</td>
</tr>
</table>
</asp:Panel>


后台的dlComments_ItemDataBound1 方法 是这样的:(用VB.Net)

Protected Sub dlComments_ItemDataBound1(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles dlComments.ItemDataBound
IndexItem = CInt(e.Item.ItemIndex.ToString)

Dim strID As String = dlComments.DataKeys(IndexItem).ToString
Dim rct As New ReplyController
Dim dgArr As ArrayList = rct.GetRepliesByFeedbackID(CInt(strID))
Dim dgStr As DataGrid = CType(e.Item.FindControl("dgComments"), System.Web.UI.WebControls.DataGrid)
dgStr.DataSource = dgArr
dgStr.DataBind()

End Sub
那个datalist绑定的代码没有贴出来,可是在这个Itemdatabound 事件中总是出现错误:
An exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll but was not handled in user code

Additional information: Index was out of range. Must be non-negative and less than the size of the collection.

可是我觉得我这段程序没有什么错误啊? 请大家指教.谢谢.
...全文
132 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
NSympathizeFO 2006-08-15
  • 打赏
  • 举报
回复
谢谢你,好累好累
NSympathizeFO 2006-08-15
  • 打赏
  • 举报
回复
好了,错误已经找到了,呵呵,谢谢诸位.
jimu8130 2006-08-15
  • 打赏
  • 举报
回复
粘贴出错误信息
jimu8130 2006-08-15
  • 打赏
  • 举报
回复
这句话是去掉datalist表头,还有表尾,
拜托你单步执行下!看看出错行和代码
NSympathizeFO 2006-08-15
  • 打赏
  • 举报
回复
顺便问一下,这句话是什么意思?
NSympathizeFO 2006-08-15
  • 打赏
  • 举报
回复
不行的,我已经试过了
colonzjh 2006-08-15
  • 打赏
  • 举报
回复
学习
zzz22333 2006-08-15
  • 打赏
  • 举报
回复
没绑过,接分
jimu8130 2006-08-15
  • 打赏
  • 举报
回复
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
不知道这样写是否正确?
jimu8130 2006-08-15
  • 打赏
  • 举报
回复
那肯定是你写的这段代码有问题咯
加上
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )---这部分是c#代码,你改下
{ IndexItem = CInt(e.Item.ItemIndex.ToString)

Dim strID As String = dlComments.DataKeys(IndexItem).ToString
Dim rct As New ReplyController
Dim dgArr As ArrayList = rct.GetRepliesByFeedbackID(CInt(strID))
Dim dgStr As DataGrid = CType(e.Item.FindControl("dgComments"), System.Web.UI.WebControls.DataGrid)
dgStr.DataSource = dgArr
dgStr.DataBind() }
NSympathizeFO 2006-08-15
  • 打赏
  • 举报
回复
顺便说一句:单独执行datalist 绑定是正确的,加上这个datagrid 后绑定dlComments_ItemDataBound1 就会出错.

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧