代码之家  ›  专栏  ›  技术社区  ›  Michael

如何获取隐藏单元格的值?

  •  3
  • Michael  · 技术社区  · 6 年前

    我在我的项目中使用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>();
    

    在某一点上,我填写列表并将其设置为数据源:

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

    显示Evrething(Title、Tip、ID),工作正常。

    但是我需要向用户隐藏ID列,并且在某个时候单击row以通过 javascript函数。

    所以我的问题是如何得到隐藏的列文本?

    3 回复  |  直到 6 年前
        1
  •  3
  •   VDWWD    6 年前

    如果一个列隐藏在代码后面,则它不存在于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> 元素。但它可能是一个藏身地,另一个柱等。

        2
  •  0
  •   AnkitG    6 年前

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

    Css可以做到这一点:

    将css类添加到 <asp:boundfield> 喜欢

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

    然后在css中隐藏类

     .hidden-col{
                display:none;
            }
    

    这样ID值就可以用于js函数。

        3
  •  0
  •   Manveer Singh    6 年前

    其中一种方法可以将隐藏列绑定为

    <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

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