使用在列表视图内的文本框中输入的新值进行验证
本文关键字:输入 新值进 验证 文本 列表 视图 | 更新日期: 2023-09-27 18:12:55
我正在asp.net c#中开发电子商务网站。在我的购物车页面上,我给了每个产品添加礼券的选项。购物车页面成功加载后,用户可以在每个产品上输入代金券代码,然后在表中检查。如果优惠券代码存在为特定的产品id,那么它将得到应用。我尝试以下代码从文本框中获取值。但是用户输入的值没有得到。
OnListviewItemCommand我已经使用了如下。
if (e.CommandName == "apply code") {
try {
int id = e.CommandArgument;
TextBox coupon = (TextBox)e.Item.FindControl("itemCoupon");
Label productID = (Label)e.Item.FindControl("item_ID");
string couponDiscount = "0";
string couponCode = string.Empty;
string itemID = string.Empty;
try {
if (!string.IsNullOrEmpty(coupon.Text) & !string.IsNullOrEmpty(productID.Text)) {
string str = "SELECT * FROM coupons WHERE code IN('" + coupon.Text + "') and item_ID IN('" + productID.Text + "')";
MySqlCommand cmd = new MySqlCommand(str, con);
con.Open();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
couponCode = ds.Tables(0).Rows(0)("coupon_code");
itemID = ds.Tables(0).Rows(0)("item_ID");
if (ds.Tables(0).Rows.Count > 0) {
if (couponCode == coupon.Text && itemID == productID.Text) {
couponDiscount = ds.Tables(0)("coupon_discount").ToString;
} else {
couponDiscount = "0";
}
}
}
} catch (Exception ex) {
}
} catch (Exception ex) {
Response.Write(ex);
}
}
更新- Listview标记
<asp:ListView ID="cartItemsList" runat="server" DataKeyNames="item_ID">
<ItemTemplate>
<tr>
<td class="my-item">
<div class="item-pic">
<asp:Image ID="itmPic" runat="server" ImageUrl='<%# Eval("item_pic") %>' />
</div>
<div class="item-details">
<asp:Label ID="itemName" runat="server" Text='<%# Eval("item_name") %>' CssClass="item-name"></asp:Label>
<div class="single-redeem">
<asp:TextBox ID="itemCoupon" runat="server"></asp:TextBox>
<asp:LinkButton ID="itemRedeemButton" runat="server" Text="apply" placeholder="Promo Code" CommandArgument='<%# Eval("item_ID") %>' CommandName="apply code"></asp:LinkButton>
</div>
</div>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
我唯一的问题是我需要从文本框中获取值
你的代码工作得很好。我对它进行了测试,并在后面的代码中获得了TextBox的值。也许问题是在数据库连接/查询?下面的简化代码段并不是一个解决方案,但它向您展示了它的工作原理。
<asp:ListView ID="ListView1" runat="server" OnItemCommand="ListView1_ItemCommand">
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" CommandName="apply code" CommandArgument='<%# Eval("itemID") %>' />
<asp:TextBox ID="itemCoupon" runat="server"></asp:TextBox>
<asp:Label ID="item_ID" runat="server" Text='<%# Eval("itemID") %>'></asp:Label>
</ItemTemplate>
</asp:ListView>
protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
{
if (e.CommandName == "apply code")
{
TextBox coupon = (TextBox)e.Item.FindControl("itemCoupon");
Label productID = (Label)e.Item.FindControl("item_ID");
if (!string.IsNullOrEmpty(coupon.Text) & !string.IsNullOrEmpty(productID.Text))
{
//this works
Response.Write(coupon.Text + "___" + productID.Text);
}
}
}
确保在IsPostBack
检查中绑定ListView数据。
if (!IsPostBack)
{
ListView1.DataSource = yourSource;
ListView1.DataBind();
}