如何获得隐藏细胞的价值?

时间:2018-07-30 12:28:13

标签: c# asp.net gridview

我在项目中使用gridView。

我上了这个课:

public class FeatureDesc
{
    public string Title { get; set; }
    public string Tip { get; set; }
    public string ID { get; set; }
}

我创建:

List<FeatureDesc> list_fd = new List<FeatureDesc>();

有时我会填充list_fd并将其设置为数据源:

gvFeatList.DataSource = list_fd;
gvFeatList.DataBind();

显示所有内容(标题,技巧,ID),并且效果完美。

但是我需要向用户隐藏ID列,并在单击行以通过以下方式获取所单击行的ID时 javascript函数。

所以我的问题是如何获取隐藏的列文本?

3 个答案:

答案 0 :(得分:3)

如果某列隐藏在其背后的代码中,则html中不存在。但是您可以使用CSS隐藏它,并连续单击获取值

<asp:GridView ID="gvFeatList" runat="server" AutoGenerateColumns="false" ItemType="YourNameSpace.YourClass.FeatureDesc">
    <Columns>
        <asp:TemplateField HeaderText="Title">
            <ItemTemplate>

                <%# Item.Title %>

                //in a span element
                <span style="display:none;"><%# Item.ID %></span>

                //or a hidden field
                <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Item.ID %>' />

            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Tip">
            <ItemTemplate>

                <%# Item.Tip %>

            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

<script type="text/javascript">
    $("#<%= gvFeatList.ClientID %> tr").click(function () {
        var IDcontainer = $(this).find("span");
        alert(IDcontainer.html());
    });

    $("#<%= gvFeatList.ClientID %> tr").click(function () {
        var IDcontainer = $(this).find("input[type=hidden]");
        alert(IDcontainer.val());
    });
</script>

在此示例中,我将ID放在<span>元素中。但这可能是一个HiddenField,另一个列等。

答案 1 :(得分:0)

不是在标记或代码中将Visible属性设置为false

CSS可以解决问题:

将css类添加到<asp:boundfield>

   <asp:BoundField ItemStyle-CssClass="hidden-col"  DataField="ID" HeaderText="ID"/>

然后将类隐藏在CSS中

 .hidden-col{
            display:none;
        }

这样,ID值将可用于您的js函数。

答案 2 :(得分:0)

一种可以像

一样绑定隐藏列的方法
<asp:TemplateField>
                    <ItemTemplate>
                        <table>
                            <tr>
                                <td>
                                    <input id="btnTitle" type="button" onclick='getId(this);' value='<%# Eval("Title") %>' />
                                    <input id="hdnfldID" type="hidden" value='<%# Eval("ID") %>' />
                                    <br />
                                </td>
                            </tr>
                        </table>
                    </ItemTemplate>
                </asp:TemplateField>

您可以通过javascript之类的ID获取

<script type="text/javascript">
    function getId(ele) {
        alert("Title : " + ele.value + "\n\rId : " + $(ele).closest('tr').find('#hdnfldID').val());
    }
</script>