Данные не привязаны к C # ListView (после второй попытки) - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь использовать ListView для получения данных из базы данных.Он «работает» с первой попытки, если значение существует, но у него есть проблема при поиске значений, которые не существуют, и затем повторная попытка с любым другим значением (даже если это другое значение существует).

При отладке я заметил следующее:

Если я ищу значение, которое не существует в базе данных, а затем пытаюсь найти то, что есть, отладчик переходит от строки "bValid = true" непосредственно кметод для получения данных для Listview (lstAuthorizations_GetData ()).Вместо этого он должен перейти к bindData.Кажется, что он не обрабатывает строку bValid = true.Почему это сломалось бы здесь?Я пытался изменить строку на другие варианты, но, независимо от того, что это, она, кажется, не обрабатывается в правильном порядке

Код:

else //default
{
                    if(string.IsNullOrEmpty(Search_ANumber) && string.IsNullOrEmpty(Search_MemberID))
                    {
                        bValid = false;
                        errorMsg = "Either A Number or M ID are required";
                    }
                    else
                    {
                        bValid = true;
                        lstAuthorizations.FindControl("cColumn").Visible = false; // if not in ActiveExceptions, hide column            //may want to move this to Line 214
                    }
}

if (bValid)
{
                    bindData();
}

protected void bindData()
{
            //removeTextBoxValues(); //remove values from Textboxes since you got a response from the DB
            ShouldSearch = true;
            panelSearchResults.Visible = true;
            lstAuthorizations.DataBind();
}

Метод getdata ListView:

public IQueryable<Project.Data.databaseView> lstAuthorizations_GetData()
    {
        try
        {
            IQueryable<databaseView> query = dbVBA.databaseView.AsQueryable();
            if (!String.IsNullOrEmpty(Search_AuthNumber))
            {
                query = query.Where(m => m.A_Number == Search_ANumber);
            }
            return query.OrderBy(a=>a.A_Number);                
        }

aspx:

<asp:ListView ID="lstAuthorizations" runat="server" 
    ItemPlaceholderID="litPlaceHolder"
    ItemType="Project.Data.databaseView" SelectMethod="lstAuthorizations_GetData">

Кажется, что метод запускается для получения данных из базы данных дважды, когда он фактически возвращает результат (он переходит к методу lstAuthorizations_GetData (), затем онпереходит к привязке данных, затем снова переходит к методу lstAuthorizations_GetData ().В тех случаях, когда я пробую второе значение, оно переходит к методу lstAuthorizations_GetData (), но никогда не связывается с данными.

Кто-нибудь знает, почему это не удается?

1 Ответ

0 голосов
/ 18 декабря 2018

Мне пришлось переместить скрытие / отображение элемента управления ПОСЛЕ того, как данные были связаны.Работает сейчас:

if (bValid)
                {
                    bindData();                 

                    lstAuthorizations.FindControl("cColumn").Visible = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...