首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataList未更新

DataList未更新
EN

Stack Overflow用户
提问于 2015-04-13 04:43:46
回答 1查看 282关注 0票数 0

我已经被这个问题困扰了好几个小时了,我真的尝试了所有的方法,但都不起作用!

所以我在我的按钮点击事件中有这段代码:

代码语言:javascript
复制
 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表中是否存在特定的汽车,同时将相关的表连接在一起,以获得我想要的结果。在我的cars表中,只有一辆车是"Alfa Romeo“和"4C”。

在我的XAML中,我有:

代码语言:javascript
复制
 <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,Model值为4C,Alfa Romeo为2,它返回1行,这是完美的。当我用Model值为3的Giuletta测试Alfa Romeo时,它没有返回任何行,这也很完美。

所以,由于他们的查询没有任何问题,它的时间来测试它是如何在网站上,当我在网站上测试它时,我选择了阿尔法罗密欧4C,它显示了项目列表中的制造,但是当我选择阿尔法罗密欧Giuletta,它仍然显示在项目列表中的制造,但当我重新加载整个页面,并选择Alfa Romeo Giuletta,它什么也没有显示,当我选择Alfa Romeo 4C时,它再次没有显示任何东西!

因此,似乎我必须刷新页面,以显示预期的结果,我真的不知道为什么它这样做,但我已经尝试处置,然后DataBinding的DataList之前的任何其他点击,即使没有任何工作!

有人知道问题出在哪里吗?如果你需要我更多的解释,请提问,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-04-13 04:59:37

试试这个。

AFTER: SearchDataSource.SelectCommand =查询;

添加: DataList1.Databind()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29594444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档