2013-05-06 75 views
0

我正在使用填充DetailsView(主/细节方法)的GridView。当我点击GridView中的Select并显示DetailsView时,在我从GridView中选择另一行并显示另一个DetailsView之后,该视图仍然显示。我的问题是:如何在同一时间只显示一个DetailsView?使用主/明细方法时隐藏细节视图

到目前为止,我有:

protected void grdMonster_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    //grdMonster is GridView and "BookTitle" is datafield and pnlBooks is panel around BookTitle 
    //DetailsView 
    if (grdMonster.SelectedValue.ToString() != "BookTitle") 
     pnlBooks.Visible = false; 
    else 
     pnlBooks.Visible = true; 
} 

它不工作! BookTitle DetailsView不显示! }

+0

你是否检查'grdMonster.SelectedValue'是否真的''BookTitle''? – SimpleVar 2013-05-06 00:58:52

+0

是的,DetailsView for BookTitle使用DetailsView sql显示为: user963070 2013-05-06 01:17:37

+0

逻辑和规则,而不是测试。在'pnlBooks.Visible = true'上设置一个断点,看它是否到达那里。 – SimpleVar 2013-05-06 02:03:32

回答

0

修复它意外。 “BOOKTITLE” 是在用下面的代码沿的DataKeyNames需要(I添加别的东西此代码):

保护无效grdMonster_SelectedIndexChanged(对象发件人,EventArgs的) { 串BOOKTITLE = grdMonster.DataKeys [grdMonster。的SelectedIndex] [ “BOOKTITLE”]的ToString(); sqlDV1.SelectParameters.Clear(); sqlDV1.SelectParameters.Add(“BookTitle”,BookTitle); dtv1.DataBind(); }

不太确定这是如何工作,但它确实如此。