请教repeater中嵌套datalist的问题

Magicloud 2003-12-15 09:37:26
要显示的数据比较特殊,记录的条数不定,每条的字段数也不定,所以采用repeater中嵌套datalist。
aspx部分代码如下:
<asp:repeater id="rp" runat="server" DataMember="Master">
<ItemTemplate>
<asp:Label id="lblDetail" runat="server"></asp:Label>
<asp:DataList id="dl" runat="server">
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "Type") %>
<%# DataBinder.Eval(Container.DataItem, "Name") %>
<%# DataBinder.Eval(Container.DataItem, "No") %>
</td>
<td>
<asp:Button ID="btnMove" Text="调换" Runat="server"></asp:Button></td>
<td>
<asp:Button ID="btnInsert" Text="迁入" Runat="server"></asp:Button></td>
<td>
<asp:Button ID="btnRemove" Text="迁出" Runat="server"></asp:Button></td>
</tr>
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>

</asp:repeater>

.cs部分代码如下:
private void rp_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == System.Web.UI.WebControls.ListItemType.Item || e.Item.ItemType == System.Web.UI.WebControls.ListItemType.AlternatingItem)
{
System.Web.UI.WebControls.DataList dl = (System.Web.UI.WebControls.DataList)e.Item.FindControl("dl");
dl.HeaderTemplate = LoadTemplate("Header.ascx");
dl.FooterTemplate = LoadTemplate("Footer.ascx");
System.Web.UI.WebControls.Label lbl = (System.Web.UI.WebControls.Label)e.Item.FindControl("lblDetail");
lbl.Text = ((System.Data.DataRowView)e.Item.DataItem).Row.ItemArray[1].ToString();
dl.DataSource = ds;
dl.DataMember = ((System.Data.DataRowView)e.Item.DataItem).Row.ItemArray[0].ToString();
dl.DataBind();
}
}

第一次提交,显示正常,当有其它提交时(比如点一个checkbox),此过程出错,dl、lbl均为空指针,也就是findcontrol没有结果。

判断IsPostBack会导致正常提交也没有显示。

如何解决?谢谢。
...全文
21 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Magicloud 2003-12-15
  • 打赏
  • 举报
回复
ds是一个dataset

因为具体是用户点几个checkbox,然后按统计按钮,因为check数的不确定,所以使用url参数会比较麻烦,我觉得。
Programmersheaven 2003-12-15
  • 打赏
  • 举报
回复
判断IsPostBack会导致正常提交也没有显示
--------------------------------------
与IsPostBack关系不大,建议你不要这种事件的方式,而采用传递URL参数的方式,即
按下Button A,则转到 my.aspx?id=23 ,在程序里检测ID值来进行不同操作,这样会比较可靠
acewang 2003-12-15
  • 打赏
  • 举报
回复
dl.DataSource = ds; ds??
Magicloud 2003-12-15
  • 打赏
  • 举报
回复
帖子沉得快啊……

62,046

社区成员

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

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

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

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