【问题标题】:How to use jQuery/Javascript to change <tr> attribute in gridview如何使用 jQuery/Javascript 更改 gridview 中的 <tr> 属性
【发布时间】:2020-03-24 15:26:26
【问题描述】:

我有一个嵌套的 GridView,我将 &lt;tr style="display:none"&gt; 设置为仅显示主 GridView gvPosition。我想要做的是,一旦用户单击标签lblPosition,然后将显示属性更改为“初始”,它将显示第二个 GridView gvInput,其中包含用于输入内容的文本框。

我是 jQuery 和 Javascript 的新手,我需要一些帮助!

非常感谢!

<asp:GridView runat="server" ID="gvPosition"
        DataKeyNames="Position" EmptyDataText="No Data Returned" 
        AutoGenerateColumns="false" OnRowDataBound="gvPosition_RowDataBound" SkinID="Grid">
        <Columns> 
            <asp:TemplateField HeaderText ="Position">
                <ItemTemplate>
                    <asp:Label ID="lblPosition" Font-Bold="true" runat="server" Text='<%# Eval("Position")%>' />
                </ItemTemplate>
            </asp:TemplateField>            
            <asp:BoundField DataField="Surplus" HeaderText="Surplus" />
            <asp:BoundField DataField="Total Credits" HeaderText="Total Credits" />

            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Button runat="server" ID="btnEdit" Text="Edit" CssClass="btn btn-primary" CommandName="EditButton" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" />
                    <tr style="display:none">
                        <td></td>
                        <td colspan="100">
                            <asp:Panel ID="pnlInputs" runat="server">
                                <asp:GridView ID="gvInput" runat="server" AutoGenerateColumns="false" SkinID="Grid">
                                    <Columns>

                                        <asp:TemplateField HeaderText="PCredit: ">
                                            <ItemTemplate>
                                               <asp:TextBox ID="tbPC" runat="server" Text='<%# Eval("PCredit") %>' CssClass="form-control" />
                                            </ItemTemplate>
                                        </asp:TemplateField>

                                        <asp:TemplateField HeaderText="Heads: ">
                                            <ItemTemplate>
                                                <asp:TextBox ID="tbHeads" runat="server" Text='<%# Eval("BA") %>' CssClass="form-control" />
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                    </Columns>
                                </asp:GridView>
                            </asp:Panel>
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>

        <RowStyle HorizontalAlign="Center" />
        <SelectedRowStyle HorizontalAlign="Center" />

    </asp:GridView>

【问题讨论】:

    标签: javascript jquery asp.net visual-studio webforms


    【解决方案1】:

    首先,您可以通过在页面加载函数中添加onclick属性来绑定点击事件以调用JavaScript函数。

    void Page_Load(object sender, EventArgs e) 
    {
        lblPosition.Attributes.Add("onclick", "btnEditClick();");
    }
    

    要引用&lt;td&gt; 元素,您应该给它一个ID。让我们说:

    <tr id="tr" style="display:none">
    

    然后你可以有一个JavaScript函数来恢复&lt;tr&gt;的显示样式属性,如下所示:

    <script type="text/javascript">
         function btnEditClick()
         {
             var btn = document.getElementById('tr');
             btn.style.display = "";
             return false;
         }
    </script>
    

    如果您更愿意将显示设置为初始,您可以这样做:

    btn.style.display = "initial";
    

    【讨论】:

    • 谢谢先生,这行得通,但是,我试过btn.style.display = "initial"为什么这行不通?
    • 我这样写是因为我想添加一个if语句,如果style.display = "none"我会显示gridview,如果是'initial'则关闭它
    • 可能是浏览器的问题,chrome可以正常工作,但是IE不行......
    • 是的,这似乎是一个 IE 问题。我认为你仍然可以在没有initial 的情况下执行 if 语句。您可以检查btn.style.display是否为none,并设置btn.style.display = "";btn.style.display = "none";显示或隐藏。
    【解决方案2】:

    使用 jQuery:

    $('#lblPosition').click(function() {
        $('tr').css('display', 'initial');
    });
    

    虽然我建议在您的 tr 中添加一个类,以免影响其他不相关的 tr。它看起来像

    $('#lblPosition').click(function() {
        $('.someclass').css('display', 'initial');
    });
    

    【讨论】:

      【解决方案3】:

      查看这个关于更改显示样式属性的工作示例。 Link

      TL;DR

        document.getElementById("some_id").style.display = "initial";
      

      【讨论】:

      • 如果您需要更多帮助,请告诉我们,如果这对您有用,请选择它作为正确答案。
      猜你喜欢
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2015-02-03
      • 1970-01-01
      • 2017-11-17
      相关资源
      最近更新 更多