Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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_Ms Access_Sqldatasource_Datalist - Fatal编程技术网

C# 数据列表未更新

C# 数据列表未更新,c#,asp.net,ms-access,sqldatasource,datalist,C#,Asp.net,Ms Access,Sqldatasource,Datalist,我已经在这个问题上纠缠了好几个小时了,我已经尝试了所有的方法,但是没有任何效果 因此,我的按钮点击事件中有一段代码: protected void btn_search_Click(object sender, EventArgs e) { string query; int make = System.Convert.ToInt32(make_list.SelectedValue); int model = System.Convert.To

我已经在这个问题上纠缠了好几个小时了,我已经尝试了所有的方法,但是没有任何效果

因此,我的按钮点击事件中有一段代码:

 protected void btn_search_Click(object sender, EventArgs e)
 {
        string query;
        int make = System.Convert.ToInt32(make_list.SelectedValue);
        int model = System.Convert.ToInt32(model_list.SelectedValue);

        query = "SELECT c.owner_id, u.first_name, u.last_name, City.city, Makes.make, Models.model, Type.type, Colours.colour, [Year].[year], c.price, c.photo1, c.photo2, c.photo3, c.ID AS carID FROM (((((((Cars c INNER JOIN Users u ON c.owner_id = u.ID) INNER JOIN City ON u.city_id = City.ID) INNER JOIN Models ON c.model_id = Models.ID) INNER JOIN Makes ON Models.make_id = Makes.ID) INNER JOIN Type ON Models.type_id = Type.ID) INNER JOIN Colours ON c.colour_id = Colours.ID) INNER JOIN [Year] ON c.year_id = [Year].ID) WHERE ";

        if (make != 1)
        {
            query = query + "Models.make_id = @make";
            SearchDataSource.SelectParameters.Add("make", make.ToString());
        }
        else
        {
            query = query + "Models.make_id > 0";
        }

        if (model != 1)
        {
            query = query + " AND c.model_id = @model";
            SearchDataSource.SelectParameters.Add("model", model.ToString());
        }
        else
        {
            query = query + " AND c.model_id > 0";
        }


     SearchDataSource.SelectCommand = query;
     DataList1.DataBind();

 }
因此,查询根据用户在下拉列表上的输入,从Cars表中检查某辆车是否存在,同时将相关表连接在一起,以获得我想要的结果。在我的汽车表中,只有1辆车的品牌为“阿尔法·罗密欧”,型号为“4C”

在我的XAML中,我有:

 <asp:SqlDataSource ID="SearchDataSource" runat="server" ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\4WheelsDB.mdb;Persist Security Info=True" ProviderName="System.Data.OleDb">
  </asp:SqlDataSource>
    <asp:DataList ID="DataList1" runat="server" DataSourceID="SearchDataSource">
      <ItemTemplate>
         <asp:Label ID="lblmake_id" runat="server" Text='<%# Eval("make") %>' />
      </ItemTemplate>
    </asp:DataList>

因此,当我在Access中测试这个查询时,使用make值2,它是Alfa-Romeo,模型值2,它是4C,它返回1行,这是完美的。当我用模型值3测试阿尔法·罗密欧时,它没有返回任何行,这也是完美的

因此,既然他们的查询没有问题,是时候测试一下它在网站上的表现了,当在网站上测试时,我选择Alfa Romeo 4C,它在商品列表中显示品牌,但是当我选择Alfa Romeo Giuletta时,它仍然在商品列表中显示品牌,但是当我重新加载整个页面并选择Alfa Romeo Giuletta时,它不会显示任何内容,而当我选择Alfa Romeo 4C时,它也不会显示任何内容

因此,似乎我必须刷新页面以显示预期的结果,我真的不知道它为什么要这样做,但我尝试过在单击之前处理数据,然后数据绑定数据列表,即使没有任何效果

有人知道问题出在哪里吗?如果您需要我进一步解释,请询问,谢谢

试试这个

之后: SearchDataSource.SelectCommand=query

加:
DataList1.Databind()

我以前试过,很抱歉没有说。。但是,是的,它不起作用:/评论不用于扩展讨论;这段对话已经结束。