ASP.NET2.0中用户控件中Datalist的ItemTemplate控件的问题,急!

xjjhappy_88 2006-01-05 10:25:36
问题是这样的,我创建了一个用户控件如下:
<asp:Panel ID="DailyPickPanel" runat="server" Width="100%">
<table width="100%" cellpadding="5" cellspacing="0">
<tr class="rheader">
<td align="left" style="height:25" class="rheadercol">Pick Of The Day</td>
</tr>
<tr class="rbody">
<td align="left" style="height:25" class="rbodycol">
<asp:DataList ID="DtDailyPicker" runat="server" Width="100%" DataKeyField="PKId" CellPadding="0" CellSpacing="0" BorderStyle="none" DataSourceID="DailyPickerSource" RepeatLayout="Table" RepeatColumns="2" RepeatDirection="Horizontal">
<ItemStyle Width="50%" />
<ItemTemplate>
<table width="100%" border="0">
<tr>
<td rowspan="2" align="center" style="width:80">
<asp:Image ID="BookImage" runat="server" EnableViewState="false" ImageUrl='<%# "~/images/books/"+Eval("ImageFileSpec") %>' />
</td>
<td>
<asp:HyperLink ID="BookLink" runat="server" EnableViewState="false" NavigateUrl='<%#"~/Books.aspx?id="+Eval("PKId")%>'>
<%#Eval("Title") %>
</asp:HyperLink>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblBookDes" EnableViewState="false" runat="server" Text='<%#Eval("Description") %>'></asp:Label>
<br /><br />
Our Price:
<asp:Label ID="lblPrice" runat="server" EnableViewState="false" Text='<%#Eval("UnitPrice","{0:C}") %>'></asp:Label>
<br /><br />
<asp:Button ID="BtnCart" runat="server" EnableViewState="true" Text="Add to Cart" CommandName="Add" CommandArgument='<%#Eval("PKId")+"|"+Eval("Description")+"|"+Eval("UnitPrice") %>' OnClick="BtnCart_Click"/>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="DailyPickerSource" runat="server" ConnectionString="<%$ ConnectionStrings:Duwamish7ConnectionString %>"
SelectCommand="GetDailyPickBooksByCategoryId" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="1" Name="CategoryId" QueryStringField="id"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</td>
</tr>
</table>
</asp:Panel>

在BtnCart_Click中,通过BtnCart的CommandArgument来获取每一行的ID,编译通过,运行时按这个按钮就报错如下:
Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

但是如果我直接放在页面里面就没什么问题,是不是这种方式在用户控件里面不行?有什么其他方法达到相同的效果呢?
...全文
163 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjjhappy_88 2006-01-05
  • 打赏
  • 举报
回复
这是BtnCart_Click的代码:
protected void BtnCart_Click(object sender, EventArgs e)
{
Button itemButton = (Button)sender;
order = new OrderData();
int index = 0;
bool isDup = false;

char[] pars = { '|' };
string[] args = itemButton.CommandArgument.ToString().Split(pars);
order.BookID = int.Parse(args[0]);
order.Count = 1;
order.Description = args[1];
order.Price = decimal.Parse(args[2]);

Orders = (ArrayList)Session["Orders"];

if (Orders != null)
{
foreach (OrderData orderdata in Orders)
{
if (orderdata.BookID == order.BookID)
{
orderdata.Count++;
Orders[index] = orderdata;
Session.Remove("Orders");
isDup = true;
break;
}
index++;
}
if (isDup == false)
Orders.Add(order);

}
else
{
Orders = new ArrayList();
Orders.Add(order);
}
Session.Add("Orders", Orders);
Response.Redirect("ShoppingCart.aspx");

}
一摸一样的在aspx页面能行,但是放到ascx中,再把用户控件放到aspx页面中运行就不行
xuwenzhuo 2006-01-05
  • 打赏
  • 举报
回复
代码不全,在贴点。
xjjhappy_88 2006-01-05
  • 打赏
  • 举报
回复
难道没人出现过这种问题吗?没有人知道是怎么回事吗?

62,046

社区成员

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

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

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

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