我的GridView定义如下:
<asp:GridView ID="myGridView" AutoGenerateColumns="false" runat="server"
OnLoad="myGridView_Load" OnRowCommand="myGridView_Command" OnRowEditing="myGridView_RowEditing" OnRowDeleting="myGridView_RowDeleting" DataKeyNames="ID" >
<Columns>
<asp:BoundField DataField="ID" Visible="false" />
<asp:BoundField DataField="BirthDate" Visible="false" />
<asp:BoundField DataField="FirstName" HeaderText="First Name" />
<asp:BoundField DataField="LastName" HeaderText="Last Name" />
<asp:TemplateField HeaderText="Other">
<ItemTemplate>
<asp:LinkButton ID="editLB" runat="server" Text="edit" CommandName="Edit" />
<asp:LinkButton ID="deleteLB" runat="server" Text="delete" CommandName="Delete" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
当用户单击编辑按钮时,我需要获取BirthDate列的值.为了尝试这一点,我尝试了以下方法:
protected void myGridView_RowEditing(object sender, GridViewEditEventArgs e)
{
GridViewRow row = gvUsers.Rows[e.NewEditIndex];
DateTime birthDate = (DateTime)(row.Cells[1].Text);
// Does not work
}
Run Code Online (Sandbox Code Playgroud)
我知道它与列不可见这一事实有关.必须隐藏该列.但我需要获得这个价值 - 我该怎么做?
问题是当the的Visibility属性BoundField设置为false时,列不会呈现给客户端.解决方法是使用HiddenFielda TemplateField而不是.
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField ID="HiddenField1" runat="server"
Value='<%# Eval("BirthDate") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:HiddenField ID="HiddenField1" runat="server"
Value='<%# Eval("BirthDate") %>' />
</EditItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
protected void GridView_RowEditing(object sender, GridViewEditEventArgs e)
{
GridViewRow row = GridView.Rows[e.NewEditIndex];
HiddenField hidden = (HiddenField)row.Cells[0].FindControl("HiddenField1");
DateTime birthDate = Convert.ToDateTime(hidden.Value);
}
Run Code Online (Sandbox Code Playgroud)
编辑
上面的方法仍然会在表中呈现列,因此您最终会得到一个空列.它工作但不是最好的解决方案,这里隐藏BirthDate字段但仍然在RowEditing事件处理程序中获取其值.请记住,BirthDate仍然呈现给客户端,只是没有显示.
<style type="text/css">
.hide
{
display:none;
}
</style>
<asp:BoundField DataField="BirthDate">
<ItemStyle CssClass="hide"/>
</asp:BoundField>
Run Code Online (Sandbox Code Playgroud)
protected void GridView_RowEditing(object sender, GridViewEditEventArgs e)
{
GridViewRow row = GridView1.Rows[e.NewEditIndex];
DateTime birthDate = Convert.ToDateTime(row.Cells[1].Text);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
要隐藏内容以及网格中的标题,请使用以下代码:并照常访问该列. GridView.SelectedRow.Cells[index].Text;
<style type="text/css">
.hide
{
display:none;
}
Run Code Online (Sandbox Code Playgroud)
<asp:BoundField DataField="MailRoomID" HeaderText="Mailroom ID" ItemStyle-HorizontalAlign="Center" ShowHeader="false" ><ItemStyle CssClass="hide" /><HeaderStyle CssClass="hide"/></asp:BoundField>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30721 次 |
| 最近记录: |