在我的GridView中,我有一些名为'F Notes','P Notes'和一个ImageColumn的列。单击ImageButton后,将打开一个弹出窗口,显示“F Notes”和“P Notes”中的数据。现在我的问题是我不想在弹出窗口打开时在后台显示'F Notes'和'P Notes'列。我希望数据只在弹出窗口中可见。我知道如果我改变Visible = 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;
}
答案 0 :(得分:0)
正如“mshsayem”建议的那样(“Get DataKey values in GridView RowCommand”),我相信您可以通过在GridView中将“FNotes”和“PNotes”定义为DataKeys来绕过可见性问题。 在GridView中也更改DataKeyNames:
DataKeyNames="MrNumber,FNotes,PNotes"
然后在“Popup”中引用先前定义的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();
}