网格中的隐藏字段不会导入编辑表单

时间:2012-02-12 19:43:53

标签: c# asp.net

我有一个网格,只显示一条信息,如标题。其他字段是隐藏的。单击编辑时,模式弹出窗口将显示一个表单,并从网格中导入信息以进行编辑。但是,不会导入隐藏字段中的信息。我不想在网格中显示所有信息,因为我只有标题空间。

我该如何使这项工作?谢谢。 Risho

<asp:GridView ID="gvForum" runat="server" DataSourceID="odsForumApproval" DataKeyNames="id" Width="200px"
RepeatColumns="1" DataKeyField="id" CssClass="gridview"
AutoGenerateColumns="False" GridLines="None" OnSelectedIndexChanged="_OnCommand">
<AlternatingRowStyle CssClass="altbgcolor"  />
<Columns>                            
    <asp:BoundField DataField="title" />

    <asp:TemplateField >
        <ItemTemplate>
            <asp:HiddenField runat="server" ID="hfId" Value='<%# Eval("id") %>' />
        </ItemTemplate>                                
    </asp:TemplateField>

    <asp:TemplateField >
        <ItemTemplate>
            <asp:HiddenField runat="server" ID="hfDesc" Value='<%# Eval("description") %>' />
        </ItemTemplate>                                
    </asp:TemplateField>

    <asp:TemplateField >
        <ItemTemplate>
            <asp:LinkButton ID="lnkbtn" Text="Approve" runat="server" onclick="lnkbtn_Click"/>
        </ItemTemplate>                                
    </asp:TemplateField>
</Columns>

protected void lnkbtn_Click(object sender, EventArgs e)
{

    LinkButton btndetails = sender as LinkButton;

    GridViewRow gvrow = (GridViewRow)btndetails.NamingContainer;

    lblID.Value = gvrow.Cells[1].Text;

    txtTitle.Text = gvrow.Cells[0].Text;

    lblMessage.Text = gvrow.Cells[3].Text;

    this.ModalPopupExtender1.Show();

}

1 个答案:

答案 0 :(得分:1)

如果您使用TemplateFields嵌套控件,则单元格文本为空。您需要获取对控件的引用并使用其适当的属性(如TextBox.TextHiddenField.Value)。因此,您可以在GridViewRow上使用FindControl

var hfId = (HiddenField)gvrow.FindControl("hfId");
var hfDesc = (HiddenField)gvrow.FindControl("hfDesc");
txtTitle.Text = gvrow.Cells[0].Text;
lblID.Value = hfId.Value;
txtTitle.Text = hfdesc.Value;