比较数据列表中的行最好的方法是什么?

本文关键字:方法 是什么 数据 列表 比较 | 更新日期: 2023-09-27 18:17:54

我要问的一般问题是比较数据列表中的行最好的方法是什么。我的代码是关于一个包含一个文本框和两个按钮的数据,一个提交,一个清除。当用户单击提交时,我试图将文本框与其他行进行比较。按钮单击是一个命令,我传递ItemIndex作为命令参数,所以我知道什么行按钮单击正在发生。我使用foreach循环遍历每一行。

下面的代码是我的foreach循环,它位于我的click事件

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使用相同的数据表和循环通过每一行吗?或者这对我想要达到的目标没有效果。

如果需要更多的信息我可以添加。

比较数据列表中的行最好的方法是什么?

你可以做的是首先抓住被点击的DataListItem,并找到它的文本框:

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++;            
        }
    }
}