【问题标题】:Using javascript to assign value from td to asp.net hiddenfield使用 javascript 将值从 td 分配给 asp.net hiddenfield
【发布时间】:2012-07-31 03:49:37
【问题描述】:

我遇到了与以前的海报相同的问题,我需要在页面加载之前设置会话变量。因为 pageload 在我的 gridview.RowCommand 之前触发,所以我尝试使用下面文章中的这个方法,它结合了隐藏字段的使用。我的最终目标是删除 onRowCommand 事件并使用文章中介绍的解决方案。我一直在使用 firebug 来调试我的 javascript,但是每次当我查看 this.parent 时出现“未定义”错误(这是一个 td,this.parent 应该是 tr)。根据萤火虫, this.parent.cells[2].textContent 是我获得我想要的 OID 值的方式。由于我很少花时间编写 javascript,任何帮助将不胜感激。

来自 JS 的代码行问题

this.parent.cells[2].textContent

我的网格视图

<asp:GridView ID="gridViewOpenOrders" CssClass="gvOpenOrders" runat="server" AutoGenerateColumns="False"
            AllowPaging="True" RowStyle-BorderStyle="None"
            DataKeyNames="AccountNumber,OrderID"
            Width="802px" OnRowCommand="gridViewOpenOrders_RowCommand">
            <Columns>
                <asp:ButtonField Text="Select" HeaderStyle-Width="40px" ItemStyle-CssClass="assignOrderID"/>
                <asp:BoundField DataField="OrderDate" HeaderText="Date" SortExpression="OrderDate"
                    DataFormatString="{0:d}">
                    <HeaderStyle Width="100px" />
                </asp:BoundField>
                <asp:BoundField DataField="OrderID" HeaderText="OID" SortExpression="OrderID">
                    <HeaderStyle Width ="40px" />
                </asp:BoundField>             
            </Columns>
            <HeaderStyle CssClass="ColumnHeaders" />
            <RowStyle CssClass="ColumnRows" />
            <SelectedRowStyle BackColor="#D9D9FF" />
        </asp:GridView>

我的 Javascript:

<script type="text/javascript">
    $(document).ready(function() {
        $(".assignOrderID").click(function () {
            var testing = $(".assignOrderID")
            alert(this.parent)
            alert(this.parent.cells[2])
            alert(this.parent.cells[2]).textContent
            document.getElementById('ContentPlaceHolder1_formViewOrder_hiddenFieldOrderID').value = this.parent.cells[2].textContent
            alert('hi2');
        });
    });
</script>

页面加载代码:

Dim t As HiddenField = formViewOrder.FindControl("hiddenFieldOrderID")
Session.Add("OrderID", t.Value)

研究: Setting a session variable before AutoPostBack fires in an asp:Button

【问题讨论】:

    标签: javascript asp.net css vb.net


    【解决方案1】:

    首先,您的 HiddenField ClientIdMode 属性应该是 static。然后你可以像这样得到 HiddenField:

    HidddenField hdn = this.Page.FindControl("gridViewOpenOrders").FindControl("hiddenFieldOrderID") as HiddenField
    

    【讨论】:

    • 在调试我所拥有的东西时,它可以很好地拉出隐藏字段。如果我通过 javascript 设置隐藏字段,则该值会根据我在页面加载中的内容正确提取。我的问题是javascript document.getElementById('ContentPlaceHolder1_formViewOrder_hiddenFieldOrderID').value = this.parent.cells[2].textContent 中的以下行如果我这样做 document.getElementById('ContentPlaceHolder1_formViewOrder_hiddenFieldOrderID').value = "t" 这行得通.因此我的问题是“this.parent.cells[2].textContent”
    • 好的,我明白了。但是您的代码中的“this”是什么。我认为这是您的
    • 我很抱歉造成混淆,“this”命令引用了一个 。 (JS 中的 this 命令不是 VB)因此“this.parent”应该引用 ,cells[2].textContent 因此应该引用第三个单元格的值,即我的 OrderID。这就是我通过 firebug 获得我想要的值的方式,但是当我运行代码时,this.parent 总是显示为“未定义”。具体来说,根据警报,this = object HTMLTableDataCellElement.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2016-03-13
    • 2021-04-20
    • 2012-11-07
    • 1970-01-01
    相关资源
    最近更新 更多