Заполните поля таблицы при выполнении запроса - PullRequest
0 голосов
/ 24 ноября 2011

Я пытаюсь создать ASP-сайт, который заполняет таблицу на основе результатов выбора в ListBox. Для этого я создал таблицу GridView внутри элемента div. В настоящее время поведение по умолчанию - показывать все элементы в указанной таблице в порядке сортировки.

Однако я хотел бы уточнить это, чтобы отобразить совпадения на основе результатов выбора ListBox, но я не уверен, как это выполнить. ListBox запускает событие OnSelectionChanged для метода, определенного ниже, и элемент GridView определяется как

<asp:GridView ID="dataListings"  runat="server" AllowSorting="True" 
                    AutoGenerateColumns="False" DataSourceID="LinqDataSource1" 
                    OnDataBinding="ListBox1_SelectedIndexChanged">

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        int itemSelected = selectTopics.SelectedIndex;
        string[] listing = null;

        switch (itemSelected)//assign listing the array of course numbers
        {
            case 0: 
                break;
            case 1: 
                listing = arts;
                break;

            case 2:
                listing = currentEvents;
                break;

           .... More cases here

            default:
                listing = arts;
                break;


        }
        using (OLLIDBDataContext odb = new OLLIDBDataContext())
        {

            var q = 
                from c in odb.tbl_CoursesAndWorkshops 
                where listing.Contains(c.tbl_Course_Description.tbl_CoursesAndWorkshops.course_workshop_number) 
                select c;

            dataListings.DataSource = q;
            dataListings.DataBind();

        }
    }

Однако этот метод никогда не срабатывает. Я вижу запрос при изменении выбора, но установка точки останова в объявлении метода ничего не делает.

Исходя из этого, настройка, у меня есть три связанных вопроса

  1. Что мне нужно изменить, чтобы запустить обработчик события OnSelectionChanged?
  2. Как я могу изменить область GridView, чтобы она была пустой при загрузке страницы?
  3. Как отправить результаты выполнения dataListings.DataBind() для отображения в GridView?

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Для первой части вашего вопроса, добавьте AutoPostBack в список:

<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True"...

Для второй части (очистить GridView). Вы также можете создать EmptyDataTemplate, чтобы вы видели что-то .

    GridView1.DataSource = null;
    GridView1.DataSourceID = null;
    GridView1.DataBind();

И у вас может быть это «назад»:

OnDataBinding="ListBox1_SelectedIndexChanged">

Когда изменяется выбор ListBox, назначьте источник данных для вида сетки и вызовите DataBind для вида сетки.

0 голосов
/ 25 ноября 2011

Ответ для 1

Установите для AutoPostBack значение true для ListBox1, например

<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True".... ></asp:ListBox>

Ответ для 2

При изменении выбора сначала необходимо очистить данные из GridView., как

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
  dataListings.DataSource = null;
  dataListings.DataSourceID = null;
  dataListings.DataBind();
  ........... // Other code goes here
}

Ответ за 3

Получить событие OnDataBinding из GridView

 <asp:GridView ID="dataListings"  runat="server" AllowSorting="True" 
  AutoGenerateColumns="False" DataSourceID="LinqDataSource1" >

Добавить событие (onselectedindexchanged) в ListBox1, чтобы оно выглядело как

<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True" 
 onselectedindexchanged="ListBox1_SelectedIndexChanged"></asp:ListBox>

Теперь, в событии ListBox1_SelectedIndexChanged, если у вас есть новые данные в запросе для привязки GridView, тогда он будет связывать GridView, но приведенные ниже изменения будут иметь хороший вывод.

var q = ...; //Your query for getting data goes here.

dataListings.DataSource = q;
dataListings.DataSourceID = null;
dataListings.DataBind();

Теперь каждый раз, когда GridView будет заполняться новыми данными из вашего запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...