【问题标题】:Data not binded to C# ListView (after second attempt)数据未绑定到 C# ListView(第二次尝试后)
【发布时间】:2018-12-14 20:50:02
【问题描述】:

我正在尝试使用 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();
}

ListView的getdata方法:

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() 方法,但永远不会绑定数据。

有人知道为什么会失败吗?

【问题讨论】:

  • 在哪里可以找到 lstAuthorizations_GetData() 方法?它在哪里打电话?我认为这个代码段不足以进行任何类型的分析。
  • 我为此添加了代码。希望这就是你所指的。该 GetData 方法适用于 ListView。它在 SelectMethod= 的 ListView 中的 aspx 中被引用

标签: c# asp.net listview data-binding


【解决方案1】:

绑定数据后,我不得不移动隐藏/显示控件。现在可以使用了:

if (bValid)
                {
                    bindData();                 

                    lstAuthorizations.FindControl("cColumn").Visible = true;

【讨论】:

    猜你喜欢
    • 2019-12-15
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多