【问题标题】:What is the best way to compare rows in a datalist比较数据列表中的行的最佳方法是什么
【发布时间】: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 &amp;&amp; !isCurrentRow) 对于每个 dlGiftCode.Items.Count 循环周期将具有相同的值,因此它将根据条件将 giftCount 增加 dlGiftCode.Items.Count0。您确定这是您想要实现的目标吗?
  • @EugenePodskal 是的,这是我的问题,也是我的问题所在。我试图将giftCount 增加一个,仅当它位于另一行时。 dlGiftCode.Items.Count 是否可以告诉该循环要经过多少次才能遍历每一行(尽管我的逻辑实际上并未遍历每一行)

标签: c# asp.net datalist


【解决方案1】:

你可以做的是首先抓住被点击的DataListItem,然后找到它的TextBox:

LinkButton clickedButton = (LinkButton)sender;
DataListItem clickedItem = (DataListItem)clickedButton.NamingContainer;
TextBox clickedTextbox = (TextBox)clickedItem.FindControl("txtCardCode");

然后,遍历 DataList 的项目,将您刚刚单击的项目与其余项目进行比较:

foreach (DataListItem dli in dlGiftCode.Items)
{
    if (dli != clickedItem)
    {
        TextBox tb = (TextBox)dli.FindControl("txtCardCode");
        if (tb.Text == clickedTextbox.Text)
        {
            giftCount++;            
        }
    }
}

【讨论】:

    猜你喜欢
    • 2020-08-07
    • 1970-01-01
    • 2018-06-07
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2015-08-21
    相关资源
    最近更新 更多