为什么我不能在javascript中获得GridView的值?

时间:2014-11-17 09:28:20

标签: javascript c# asp.net gridview

现在我正在寻找一种动态地向gridview添加行的方法。

这就是我的GridView在HTML中的样子:

    <asp:GridView ID="gridView" runat="server" AutoGenerateColumns="false">
        <Columns>
            <asp:BoundField AccessibleHeaderText="Zutaten" HeaderText="Zutaten"/>
            <asp:BoundField AccessibleHeaderText="Menge" HeaderText="Menge" />
        </Columns>
    </asp:GridView>

<asp:Button ID="btnSubmit" Text="+" runat="server" CausesValidation="false" OnClientClick="Insert(); return false;"/>

这就是我尝试使用javascript:

在网格中插入新行的方法
<script type="text/javascript" defer="defer">

    function Insert()
    {
        var table = document.getElementById('<%=gridView.ClientID%>');
        //Get values
        var zutat = document.getElementById('<%=tbZutat.ClientID%>'); //this comes from other controls
        var menge = document.getElementById('<%=tbMenge.ClientID%>'); //this comes from other controls
        //Create Cells
        var tr = document.createElement("tr");
        var cell = document.createElement("td");
        var cell2 = document.createElement("td");

        cell.innerHTML = zutat.toString();
        cell2.innerHTML = menge.toString();
        tr.appendChild(cell);
        tr.appendChild(cell2);
        table.firstChild.appendChild(tr);

    }
</script>

我甚至不知道这是否有效,因为当我运行它时,我在js-code的最后一行得到一个异常:

  

0x800a138f - JavaScript运行时错误:无法获取属性   未定义或空引用的“ firstChild ”。

顺便说一下,我还在我的Page_Load方法中将DataTable绑定到控件:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            SetInitialRow();
        }
    }

    private void SetInitialRow()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("Zutat:", typeof(string)));
        dt.Columns.Add(new DataColumn("Menge:", typeof(string)));
        //Store the DataTable in ViewState
        ViewState["ZutatenTable"] = dt;
        gridViewZutaten.DataSource = dt;
        gridViewZutaten.DataBind();
    }

因此表变量始终为null。这是为什么?我忘记了什么?

0 个答案:

没有答案