GridView列可见性

本文关键字:可见性 GridView | 更新日期: 2023-09-27 18:13:18

在我的GridView中,我有名为'F Notes', ' p Notes'和imageccolumn的列。点击ImageButton后,弹出窗口打开,显示'F Notes'和'P Notes'中的数据。现在我的问题是我不希望"F笔记"answers"P笔记"列在弹出窗口打开时显示在背景中。我想要的数据是可见的只有在弹出框。我知道,如果我改变可见= false然后列将不会显示,但当我这样做,在弹出的文本是不可见的。

下面是我的HTML和aspx.cs的代码:
 <asp:BoundField DataField="FNotes" HeaderText="F Notes" Visible="False" SortExpression="FNotes" />
 <asp:BoundField DataField="PNotes" HeaderText="P Notes" Visible="False" SortExpression="PNotes" />
 <asp:TemplateField HeaderText="Notes">
    <ItemTemplate>
      <asp:ImageButton ID="btnShowPopup" runat="server" Visible='<%#true.Equals(Eval("notesVisible"))%>' ImageUrl="~/Images/Imgs.jpg" Height="30px" Width="30px" OnClick="Popup" />
    </ItemTemplate>
  </asp:TemplateField>
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        GridView1.Columns[2].Visible = true;
        GridView1.Columns[3].Visible = true;
    }

GridView列可见性

正如"mshsayem"建议的("在GridView行命令中获取DataKey值"),我相信你可以通过定义你的"FNotes"answers"PNotes"作为GridView中的DataKey来绕过可见性问题。修改GridView中的DataKeyNames:

DataKeyNames="MrNumber,FNotes,PNotes"

然后在你的"弹出"引用之前定义的DataKeys,而不是从单元格本身获取数据。

protected void Popup(object sender, EventArgs e) { 
     ImageButton btndetails = sender as ImageButton; 
     GridViewRow gvrow = (GridViewRow)btndetails.NamingContainer; 
     lblMrNumber.Text = (string)GridView1.DataKeys[gvrow.RowIndex]["MrNumber"]; 
     lblMrNumber.Text = gvrow.Cells[6].Text; 
     txtFNotes.Text = (string)GridView1.DataKeys[gvrow.RowIndex]["FNotes"]; 
     txtPNotes.Text = (string)GridView1.DataKeys[gvrow.RowIndex]["PNotes"];  
     this.GridView1_ModalPopupExtender.Show(); 
}