请教一个关于Repeater的用法

来自故乡的风 2011-01-13 11:17:19
我用DataTable建了一个购物车,使用Repeater显示里边的内容(ID,Title,Quantity,Price)。

在每一行的数量(Quantity)后面增加一个文本框和一个按钮,用来改变原有的数量。不知怎么办,请指教!


<asp:Repeater ID="Repeater1" runat="server" onitemcommand="Repeater1_ItemCommand">
<ItemTemplate>
<%# Eval("Title") %> X <%# Eval("Quantity") %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Update" CommandName="ID" />
</ItemTemplate>
<SeparatorTemplate><hr /></SeparatorTemplate>
</asp:Repeater>

代码:
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
Response.Write("aaaaa");
if (e.CommandName == "ID")
{
Response.Write("bbbb");
}
}
...全文
62 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
来自故乡的风 2011-01-14
  • 打赏
  • 举报
回复
非常感谢!

两大高手同时出现,没有不能解决的问题!
wuyq11 2011-01-13
  • 打赏
  • 举报
回复
改变原有的数量
主要想怎么操作
textbox的onblur可计算值
Button1的 click中也可修改textbox
RepeaterItem item =btn.NamingContainer as RepeaterItem;
item.FindControl
孟子E章 2011-01-13
  • 打赏
  • 举报
回复
完整的例子,拷贝代码即可直接运行

<%@ Page Language="C#" EnableViewState="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("ID", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("Quantity", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("Title", typeof(System.String)));

System.Random rd = new System.Random();
for (int i = 1; i < 10; i++)
{
dr = dt.NewRow();
dr[0] = i;
dr[1] = i;
dr[2] = "【孟子E章】" + i.ToString();
dt.Rows.Add(dr);
}
System.Data.DataView dv = new System.Data.DataView(dt);
Repeater1.DataSource = dv;
Repeater1.DataBind();
}
}

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{

if (e.CommandName == "ID")
{
TextBox TextBox1 = e.Item.FindControl("TextBox1") as TextBox;
String ID = e.CommandArgument.ToString();
String SQL = "UPDATE Table Set Quantity = " + TextBox1.Text + " Where ID=" + ID;
Response.Write(SQL);
}
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<%# Eval("Title")%>
X
<%# Eval("Quantity")%>
<asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("Quantity") %>'></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Update" CommandName="ID" CommandArgument='<%#Eval("ID") %>' />
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>
</asp:Repeater>
</form>
</body>
</html>
孟子E章 2011-01-13
  • 打赏
  • 举报
回复
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{

if (e.CommandName == "ID")
{
TextBox TextBox1 = e.Item.FindControl("TextBox1") as TextBox;
String ID = e.CommandArgument.ToString();
String SQL = "UPDATE Table Set Quantity = " + TextBox1.Text + " Where ID=" + ID;
Response.Write(SQL);
}
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<%# Eval("Title")%>
X
<%# Eval("Quantity")%>
<asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("Quantity") %>'></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Update" CommandName="ID" CommandArgument='<%#Eval("ID") %>' />
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>
</asp:Repeater>
</form>
</body>
来自故乡的风 2011-01-13
  • 打赏
  • 举报
回复
我的具体问题是:
1、执行到此页面时出现“Invalid postback or callback argument. ”的错误信息,我在页面的开始部分加上EnableEventValidation="true"就没问题了,但是后边的代码没执行。

2、每一行都有一个对应的文本框和按钮。怎么样获取发生按钮点击那行的文本框内容?

谢谢!
孟子E章 2011-01-13
  • 打赏
  • 举报
回复
TextBox TextBox1 = e.Item.FindControl("TextBox1") as TextBox;

62,074

社区成员

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

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

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

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