多个DataKeyNames不过滤sqldatasource

时间:2015-05-18 17:29:15

标签: asp.net gridview sqldatasource

  1. 我在页面上有两个绑定到sqldatasource的网格视图。第一个gridview(GVMonthReport)显示表中的数据
  2. 我的目标是从GVMonthReport中选择一行来过滤另一个表(GridView2)sqldatasource中的三个项目(Location,Trans_Budget_Code,Transaction Date)。
  3. 问题如下:我可以相应地使用其中一个过滤项(Location或Trans_Budget_Code)和GridView2过滤器,两者都有效。但是,当我同时尝试Location和Trans_Budget_Code作为过滤器时,GridView2上没有显示任何内容。我可以手动将值放入GridView2s sqldatasource中,用于Trans_Budget_Code和Location,结果就是我所期望的。当我在GVMonthReport中选择一行时,为什么会有效呢?
  4. 我认为它与GVMonthReports DataKeyNames有关(" Trans_Budget_Code,Location")。但到目前为止,我没有运气。 Trans_Budget_Code和Location不是主键是问题吗?
  5. 
    
    {{1}}
    
    
    

1 个答案:

答案 0 :(得分:3)

<asp:SqlDataSource ID="MonthUsed0" .../>

定义的设置似乎可能出现问题

PropertyName的{​​{1}}属性应设置如下所示

<asp:ControlParameter .../>

这里[0]和[1]表示在GridView的<SelectParameters> <asp:ControlParameter ControlID="GVMonthReport" Name="Location" PropertyName="SelectedDataKey.Values[1]" /> <asp:ControlParameter ControlID="GVMonthReport" Name="Trans_Budget_Code" PropertyName="SelectedDataKey.Values[0]" /> </SelectParameters> 属性中定义的键的位置。

设置DataKeyNames将仅使用PropertyName="SelectedValue"属性中定义的FIRST列的值。

您可以将DataKeyNames参数显式设置为列名:

PropertyName