【发布时间】:2014-08-14 00:43:00
【问题描述】:
我要问的一般问题是比较数据列表中的行的最佳方法是什么。我的代码是关于一个包含文本框和两个按钮、一个提交和一个清除的数据列表。当用户单击提交时,我试图将文本框与其他行进行比较。按钮单击是一个命令,我将 ItemIndex 作为命令参数传递,所以我知道按钮单击发生在哪一行。我正在使用 foreach 循环遍历每一行。
以下代码是我的点击事件中的 foreach 循环
int giftCount = 0;
foreach(DataListItem dli in dlGiftCode)
{
bool isCurrentRow = dli.ItemIndex.ToString() == e.CommandArgument.ToString() ? true:false;
int currentRow = Convert.ToInt32(e.CommandArgument);
TextBox txtCardCode = (TextBox)giftcode.FindControl("txtCardCode");
string currentCode = txtCardCode.Text;
for(int x = 0; x < dlGiftCode.Items.Count; x++)
{
if(currentCode == txtCardCode.Text && !isCurrentRow)
giftCount++;
}
if(giftCount <= 1)
{
//Continue on
}
else
{
//show message
}
}
for 循环是我查找重复项的失败尝试。我可以明白为什么它不起作用,但我似乎无法在我的问题上得到正确的逻辑。我可以使用相同的数据列表使其成为嵌套的 foreach 并再次遍历每一行吗?或者这对我想要实现的目标没有效果。
如果需要更多信息,我可以添加它。
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
目前还不清楚结果应该是什么。如果当前行的文本与其他行的文本匹配,是否应该增加giftCount?
-
if(currentCode == txtCardCode.Text && !isCurrentRow)对于每个dlGiftCode.Items.Count循环周期将具有相同的值,因此它将根据条件将giftCount增加dlGiftCode.Items.Count或0。您确定这是您想要实现的目标吗? -
@EugenePodskal 是的,这是我的问题,也是我的问题所在。我试图将
giftCount增加一个,仅当它位于另一行时。dlGiftCode.Items.Count是否可以告诉该循环要经过多少次才能遍历每一行(尽管我的逻辑实际上并未遍历每一行)