2016-01-12 58 views
0

当我已经施加在下拉列表中选择值的过滤器相匹配的Project_idBuilding_idflat_id然后gridview的应显示其他明智不显示gridview的匹配ID的匹配

现在我想要的是,如果所有的ID匹配,那么只显示gridview。

这里是我下面的代码: -

DataTable dt = new DataTable(); 

    dt.Columns.Add("PROJECT_ID"); 
    dt.Columns.Add("BUILDING_ID"); 
    dt.Columns.Add("FLAT_ID"); 

    DataView dView = new DataView(dt); 

    dView.RowFilter = "PROJECT_ID = " + ddlProject.SelectedValue + " AND BUILDING_ID = " + ddlBuilding.SelectedValue + " AND FLAT_ID = " + ddlUnit.SelectedItem.Text; 
    GrdBookingStatus.DataSource = dView.ToTable(); 
    GrdBookingStatus.DataBind(); 

    DisplayGrid(); 
    GrdBookingStatus.Visible = true; 

目前它显示,如果ID的不匹配也

我应该检查什么条件?

DisplayGrid()

protected void DisplayGrid() 
{ 
    OracleCommand cmd = new OracleCommand("SELECT pn.property_name, pn.building, cd.flat_id, ab.flat_status, ab.COMMENTS " + 
              "FROM xxcus.xxacl_pn_projbuild_v pn INNER JOIN xxacl_pn_flat_status_his ab " + 
              "ON pn.project_id = ab.project_id AND pn.building_id = ab.building_id " + 
              "INNER JOIN xxacl_pn_flat_det_v cd ON cd.flat_id = ab.flat_id", ObjPriCon); 
    DataTable dtfillgrid = new DataTable(); 
    OracleDataAdapter da = new OracleDataAdapter(cmd); 
    da.Fill(dtfillgrid); 
    GrdBookingStatus.DataSource = dtfillgrid; 
    GrdBookingStatus.DataBind(); 
} 
+0

为什么既'PROJECT_ID'和'BUILDING_ID'由'SelectedValue'检查? –

+0

@AlexJolig:因为在'db'中,它的值被保存了,而'flat',它就是以'Text'的形式出现,这就是原因。 – BNN

+0

你为什么要再次调用'DisplayGrid();'?它究竟做了什么? – Irshad

回答

1

DisplayGrid()方法返回你有过滤器并显示所有数据。

移动DisplayGrid()方法内的过滤器。

protected void DisplayGrid() 
{ 
    OracleCommand cmd = new OracleCommand("SELECT pn.project_id AS project_id, pn.property_name, pn.building, pn.building_id AS building_id, cd.flat_id AS flat_id, ab.flat_status, ab.COMMENTS " + 
              "FROM xxcus.xxacl_pn_projbuild_v pn INNER JOIN xxacl_pn_flat_status_his ab " + 
              "ON pn.project_id = ab.project_id AND pn.building_id = ab.building_id " + 
              "INNER JOIN xxacl_pn_flat_det_v cd ON cd.flat_id = ab.flat_id", ObjPriCon); 
    DataTable dtfillgrid = new DataTable(); 
    OracleDataAdapter da = new OracleDataAdapter(cmd); 
    da.Fill(dtfillgrid); 

    DataView dView = new DataView(dtfillgrid); 

    dView.RowFilter = "PROJECT_ID = " + ddlProject.SelectedValue + " AND BUILDING_ID = " + ddlBuilding.SelectedValue + " AND FLAT_ID = " + ddlUnit.SelectedItem.Text; 
    GrdBookingStatus.DataSource = dView.ToTable(); 
    GrdBookingStatus.DataBind(); 
    GrdBookingStatus.Visible = dView.ToTable().Rows.Count > 0; 
} 

我也修改您SELECT语句返回pn.project_idpn.building_id

+0

我想在第三个下拉列表的'selectedindexchanged'事件上显示网格。 – BNN

+0

在'selectedindexchanged'事件中调用'DisplayGrid()'。 – Irshad

+0

因'找不到列'PROJECT_ID'错误而出错 – BNN