Сравнение 2 просмотров сетки в asp.net

#asp.net #gridview

#asp.net #просмотр сетки

Вопрос:

Как я могу сравнить информацию в 2 представлениях сетки, и когда я нажимаю кнопку сравнить, информация, которая не совпадает, появится в другом представлении datagridview?

Например, информация. в первом datagridview 12345, во втором datagridview 1234567, затем, когда я нажимаю кнопку сравнения, 67 появится в другом datagridview.

Заранее спасибо!

Комментарии:

1. Можете ли вы показать разметку для ваших 2 просмотров сетки? И какой код вы пробовали до сих пор, чтобы сравнить их?

Ответ №1:

Вы можете сделать что-то вроде этого

  1. В коде, лежащем в основе, назначьте источник данных для просмотров сетки

    защищенная пустая страница_load(отправитель объекта, EventArgs e) { if (!Страница.IsPostBack) { Список lists1 = новый список();

         lists1.Add(1);
        lists1.Add(12345);
        lists1.Add(234354);
        lists1.Add(3421);
        lists1.Add(2343);
    
        g1.DataSource = lists1;
        g1.DataBind();
    
        List<int> lists2 = new List<int>();
    
        lists2.Add(1);
        lists2.Add(1234567);
        lists2.Add(234354);
        lists2.Add(334421);
        lists2.Add(2343343);
    
        g2.DataSource = lists2;
        g2.DataBind();
    }
      

    }

  2. На кнопке сравнения нажмите выполнить сравнение.

    защищенная пустота btn_Click(отправитель объекта, EventArgs e) { Список новых списков = новый список();

     //iterate first gridview
    foreach (GridViewRow row1 in g1.Rows)
    {
        if (row1.RowType == DataControlRowType.DataRow)
        {
            string gv1Value = row1.Cells[0].Text;
    
            //iterate second gridview
            foreach (GridViewRow row2 in g2.Rows)
            {
                if (row2.RowType == DataControlRowType.DataRow)
                {
                    string gv2Value = row2.Cells[0].Text;
    
                    //do comparison here
                    if (gv1Value.Contains(gv2Value))
                    {
                        //if your criteria are met, put the data in the new lists
                        newLists.Add(Convert.ToInt32(gv1Value));
                    }
                }
            }
        }
    }
    
    if (newLists.Count > 0)
    {
        g3.DataSource = newLists;
        g3.DataBind();
    }
      

    }

Надеюсь, это поможет

Комментарии:

1. результат этого кода не такой, как я хотел, наоборот. результат, который я хочу, — найти их разницу, а не одинаковое число в двух таблицах. И спасибо вам за этот код 🙂

2. Что, если данные, которые я буду помещать в gridview 1 и 2, взяты из sqldatasource? Какие коды я буду изменять? большое тебе спасибо