C# 如何修复ListView中所有项目的验证程序触发
我正在尝试将验证器设置为仅对用户希望添加到其购物车中的项目(在本例中为汽车)启动。我正在使用ListView显示我要出售的汽车。当用户选择他们想要的汽车并输入数量时,验证器会为每个输入触发。我该如何解决这个问题 谢谢 Cars.apxC# 如何修复ListView中所有项目的验证程序触发,c#,html,asp.net,C#,Html,Asp.net,我正在尝试将验证器设置为仅对用户希望添加到其购物车中的项目(在本例中为汽车)启动。我正在使用ListView显示我要出售的汽车。当用户选择他们想要的汽车并输入数量时,验证器会为每个输入触发。我该如何解决这个问题 谢谢 Cars.apx 诀窍是为每个项目创建一个唯一的ValidationGroup。您可以使用ListView的ClientID以及DataItemIndex。请参阅siple演示的代码片段 <asp:ListView ID="ListView1" runat="server"&
诀窍是为每个项目创建一个唯一的
ValidationGroup
。您可以使用ListView的ClientID
以及DataItemIndex
。请参阅siple演示的代码片段
<asp:ListView ID="ListView1" runat="server">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBox1"
ValidationGroup='<%# ListView1.ClientID + "_" + Container.DataItemIndex %>'></asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="Button"
ValidationGroup='<%# ListView1.ClientID + "_" + Container.DataItemIndex %>' />
</ItemTemplate>
</asp:ListView>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace CarSales_REAL
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
if (!IsPostBack)
{
ListView1.DataBind();
}
}
private Product GetSelectedProduct(object id)
{
DataView productsTable = (DataView)
SqlDataSource1.Select(DataSourceSelectArguments.Empty);
//productsTable.RowFilter = "CarID = '" + ListView1.SelectedValue + "'";
DataRowView row = productsTable[1];
Product p = new Product();
p.CarID = row["CarID"].ToString();
p.Name = row["Name"].ToString();
//p.Short_Description = row["Short_Description"].ToString();
p.Long_description = row["long_Description"].ToString();
p.CarPrice = (decimal)row["CarPrice"];
//p.ImageFile = row["ImageFile"].ToString();
return p;
}
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
}
protected void btnAdd_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
var product = GetSelectedProduct(ListView1.SelectedValue);
CartItemList cart = CartItemList.GetCart();
CartItem cartItem = cart[product.CarID];
if (cartItem == null)
{
cart.AddItem(product,
Convert.ToInt32(txtQuantity1.Text));
}
else
{
cartItem.AddQuantity(Convert.ToInt32(txtQuantity1.Text));
}
Response.Redirect("BuyCars.aspx");
}
}
protected void btnCart_Click(object sender, EventArgs e)
{
}
protected void ListView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
{
}
}
}
<asp:ListView ID="ListView1" runat="server">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBox1"
ValidationGroup='<%# ListView1.ClientID + "_" + Container.DataItemIndex %>'></asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="Button"
ValidationGroup='<%# ListView1.ClientID + "_" + Container.DataItemIndex %>' />
</ItemTemplate>
</asp:ListView>