Member 13044689 Ответов: 1

Как выбрать конкретный столбец на основе списка флажков или списка переключателей


Здравствуйте, у меня есть таблица со многими столбцами, такими как номер номера, тип автомобиля, Год выпуска, пользователь ,
и т.д.-------
и я хочу что бы я ни выбрал чек или радио с типом имени будет отображаться только тип столбца и так далее и я использую sqldatasource я новичок asp.net и просто хочу учиться

Что я уже пробовал:

я пытался сделать отдельные таблицы и дать каждому из них один источник данных sql но это не сработало и еще хуже я знаю как отфильтровать значение внутри столбца данные на его основе но я хочу только просмотреть конкретный столбец на основе радио или проверить thx

Mehedi Shams

Привет Член 13044689,

Очень трудно продолжать проблему с тем, что вы сказали. Не могли бы Вы уточнить немного подробнее, пожалуйста? Что я понял, так это:

1) у вас есть большой стол с автомобильными номерами, типами, годами, владельцами и т. д.
2) у вас есть флажки и / или переключатели, чтобы выбрать что - то-что вы выбираете? номерные знаки, типы или что?
3)вы хотите просматривать только определенные столбцы на основе выбранных флажков/переключателей. Это похоже на то, что если выбран тип и владелец, то вы хотите отображать только столбцы типы и владельцы?
4)Что вы используете для отображения? Сетка или что?

Member 13044689

привет, да, как я уже сказал, Я хочу иметь таблицу gridview со многими столбцами и переключателем или флажком с именем столбцов независимо от того, что вы выберете в переключателе 1 или 2, он будет отображаться только в Столбцах, которые вы выберете в radiobutton ( это как скрыть и показать столбцы на основе переключателя или флажка)

1 Ответов

Рейтинг:
1

Mehedi Shams

Привет Member 13044689,

Вы не указали, какой источник данных вы используете. Я предполагаю, что это SQL Server.

Логика такова:

1) При загрузке формы отобразите все столбцы (или это зависит от вас, если вы не хотите их отображать).
2) Создайте кнопку и поместите уточненный код столбцов в событие click.
3) Поместите свои флажки в групповое поле, поставьте переключатели в другое групповое поле. Вы можете назвать их иначе, чем имя, которое они имеют в базе данных. Но я использую Tag свойство, в которое я помещаю точное имя столбца, которое он имеет в базе данных.
4) перебирайте флажки и объединяйте выбранные элементы в строку выбора.
5) перебирайте переключатели и объединяйте выбранные элементы в строку выбора.
6) Создайте команду SQL на основе выбранных параметров. Если не выбрано ни одного, то выберите все.
7) Установите источник данных вашей сетки в новую таблицу данных.

private void DisplaySelectedColsBtn_Click(object sender, EventArgs e)
{
    StringBuilder SBuilder = new StringBuilder();
    string SelectionString = "";

    // Check all the checkboxes and see which ones are selected. Concatenate them in the selection string.
    foreach (CheckBox CBox in CheckGroupBox.Controls)
    {
        if (CBox.Checked)
            SBuilder.Append(CBox.Tag + ", ");
    }

    // Check all the radio buttons and see which one is selected. Concatenate them in the selection string.
    foreach (RadioButton RButton in RadioButtonGroupBox.Controls)
    {
        if (RButton.Checked)
        {
            SBuilder.Append(RButton.Tag + ", ");    // Comma is still needed as a trim operation is waiting up ahead.
            break;  // For radio buttons, only one column is selectable. So, once a selection is found, then no need to loop any further.
        }
    }

    // Eliminate the last comma if at all any checkbox is selected.
    if (SBuilder.ToString().Length > 0)
        SelectionString = SBuilder.ToString().Substring(0, SBuilder.ToString().Length - 2);

    // Modify the connection string as appropriate.
    SqlConnection Conn = new SqlConnection("Server=.;Integrated Security=SSPI;Initial Catalog=WorkBench");
    SqlCommand Cmd = new SqlCommand();
    Cmd.Connection = Conn;
    if (SelectionString.Length > 0)
        Cmd.CommandText = "SELECT " + SelectionString + " FROM [Car]";
    else
        Cmd.CommandText = "SELECT * FROM [Car]";    // If none is selected, then select all columns.
            
    DataTable DT = new DataTable();
    SqlDataAdapter DAdapter = new SqlDataAdapter(Cmd);
    DAdapter.Fill(DT);
    CarsGridView.DataSource = DT;
}
Отказ от ответственности: этот код уязвим для атаки SQL-инъекций. Я не знаю вашего рабочего сценария. Предложение состоит в том, чтобы создать SP и передать ему выбранные столбцы; таким образом, он может вернуть выбранные данные.