循环在gridview行的概念

时间:2013-12-27 12:24:50

标签: c# asp.net gridview

这是一个概念问题,我不知道如何解决它,但希望你们都能帮助我,理解我的意思。

我有一个gridview我想让按钮显示为true和false,当数量大于剩余库存时它会显示错误,剩余库存的值在错误消息旁边。

我的gridview循环使按钮可见true和false不正确。因为循环将遍历所有行,第一行没有错误消息可见true,第二行错误可见false并且它假设可以单击但第三行标签错误为空并且它将使按钮可见为真,如何解决。

我能够创建一个脚本来检测单词是否显示为false或true,但是如何检测模板gridview上的内容?

 foreach (GridViewRow row in grdCart.Rows)
        {

            Response.Write("1");
            var Qty = row.FindControl("lblQty") as Label;
            var RemainQty = row.FindControl("lblremainqty") as Label;
            var errormsg = row.FindControl("lblError") as Label;

            if (Convert.ToInt32(Qty.Text) > Convert.ToInt32(RemainQty.Text))
            {
                errormsg.Text = "Stock Remain " + RemainQty.Text;
            }
            else
            {
                errormsg.Text = "";

            }
            if (errormsg.Text == null || errormsg.Text == "")//mean have
            {
                btnCheckOut.Enabled = true;
                Response.Write("2");
            }
            else
            {
                btnCheckOut.Enabled = false;
                Response.Write("3");
            }

        }

enter image description here

2 个答案:

答案 0 :(得分:0)

尝试使用ListView而不是GridView。这将更灵活,你将能够做你想要的。它需要更多的工作,但它最终会得到回报。 您可能希望查看有关如何使用listviews的一些教程

答案 1 :(得分:0)

使用此

bool isError=false;
foreach (GridViewRow row in grdCart.Rows)
    {

        Response.Write("1");
        var Qty = row.FindControl("lblQty") as Label;
        var RemainQty = row.FindControl("lblremainqty") as Label;
        var errormsg = row.FindControl("lblError") as Label;

        if (Convert.ToInt32(Qty.Text) > Convert.ToInt32(RemainQty.Text))
        {
            errormsg.Text = "Stock Remain " + RemainQty.Text;
            isError = true;
            btnCheckOut.Enabled = false;
        }
        else
        {
            errormsg.Text = "";


        }

    }
if(!isError)
{
  btnCheckOut.Enabled = true;
}