Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于另一个组合框筛选组合框_C#_Asp.net_Combobox_Dataview - Fatal编程技术网

C# 基于另一个组合框筛选组合框

C# 基于另一个组合框筛选组合框,c#,asp.net,combobox,dataview,C#,Asp.net,Combobox,Dataview,我在windows窗体中实现这一点没有任何问题,我可以用jquery实现这一点。由于某些原因,它无法与C#&asp.net一起工作 网页上的三个组合框: Specialty Location Department 我有一个包含数据库数据的dataview。我将所有三个绑定到同一个数据视图dv。dv包含“专业”、“位置”和“部门”列 当我选择一个专业时,我想过滤数据视图以只显示那些专业。每个组合框应仅显示这些行 protected void SpecialtyList_SelectedIndex

我在windows窗体中实现这一点没有任何问题,我可以用jquery实现这一点。由于某些原因,它无法与C#&asp.net一起工作

网页上的三个组合框:

Specialty
Location
Department
我有一个包含数据库数据的dataview。我将所有三个绑定到同一个数据视图dv。dv包含“专业”、“位置”和“部门”列

当我选择一个专业时,我想过滤数据视图以只显示那些专业。每个组合框应仅显示这些行

protected void SpecialtyList_SelectedIndexChanged(object sender, EventArgs e)
{
    dv.RowFilter = string.Format("department_specialty = '{0}'", SpecialtyList.SelectedValue.ToString());
}

当事件不触发任何筛选器时,AutoPostBack为True。我是疯了还是忽略了什么?“我的页面”有一个回发陷阱,因此它不会重新初始化数据或将自身重置为默认值。

您没有发布足够的代码-没有足够的数据进行诊断

  • 是否可以附加调试器并在SpecialtyList_SelectedIndexChanged()中设置断点以验证是否调用了它

  • 您可以发布完整的代码,或者至少发布与绑定/填充数据相关的部分吗

  • 最常见的问题(我见过)是:在每次加载时都执行DataBind()。当您重新绑定数据时,您会丢失Indexchange事件等的上下文。您说您没有在回发中重新初始化数据,但您确定您没有重新绑定数据吗

    试试这个:

    if (!IsPostBack)
    {
      SpecialtyList.DataBind();
    }
    
    更改RowFilter后,您可能还需要重新绑定DataView:

    protected void SpecialtyList_SelectedIndexChanged(object sender, EventArgs e)
    {
        dv.RowFilter = string.Format("department_specialty = '{0}'", SpecialtyList.SelectedValue.ToString());
        dv.DataBind();
    }
    

    一种想法是,这可能可以在客户机上用JavaScript实现,以便在每次更改过滤器时都可以将邮件发回服务器。听起来,未过滤的数据集最初还是会被提取。您尝试过滤的组合框是绑定到
    dv
    (我假设它是
    DataView
    )还是绑定到
    DataTable
    ?我相信您需要将列表设置回过滤结果。它不会马上生效。谢谢你的回复。我想出来了。DataView是在页面加载事件的if(!isPostBack)中创建的。一旦我把它移到外面,数据就在那里了。愚蠢的我认为我可以依靠ASP像会话一样维护数据。