Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在PageMethod函数中向页面动态添加web控件_Javascript_Asp.net_Vb.net_Pagemethods - Fatal编程技术网

Javascript 如何在PageMethod函数中向页面动态添加web控件

Javascript 如何在PageMethod函数中向页面动态添加web控件,javascript,asp.net,vb.net,pagemethods,Javascript,Asp.net,Vb.net,Pagemethods,我在页面上有一个列表视图,用户将在其中输入他们希望订购的每个产品的QTY。在页面的右侧,我希望在输入数据时动态更新/显示他们正在排序的项目 Listview中的textbox控件正在OnChange事件中调用javascript函数,到目前为止没有任何问题: function CalculateCost(idofCell) { var parts = idofCell.split("_") var totalQty = 0 var totalCost = 0 va

我在页面上有一个列表视图,用户将在其中输入他们希望订购的每个产品的QTY。在页面的右侧,我希望在输入数据时动态更新/显示他们正在排序的项目

Listview中的textbox控件正在OnChange事件中调用javascript函数,到目前为止没有任何问题:

function CalculateCost(idofCell) {
    var parts = idofCell.split("_")
    var totalQty = 0
    var totalCost = 0
    var ProductCost = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_ProductCostLabel_" + parts[5]).innerHTML)
    var ProductName = (document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_ProductNameLabel_" + parts[5]).innerHTML)
    var MonQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_MondayQuantityText_" + parts[5]).value)
    var TuesQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_TuesdayQuantityText_" + parts[5]).value)
    var WedQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_WednesdayQuantityText_" + parts[5]).value)
    var ThursQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_ThursdayQuantityText_" + parts[5]).value)
    var FriQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_FridayQuantityText_" + parts[5]).value)
    var SatQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_SaturdayQuantityText_" + parts[5]).value)
    var SunQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_SundayQuantityText_" + parts[5]).value)

    totalQty = (MonQty + TuesQty + WedQty + ThursQty + FriQty + SatQty + SunQty)
    totalCost = (MonQty + TuesQty + WedQty + ThursQty + FriQty + SatQty + SunQty) * ProductCost

    document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_TotalCostText_" + parts[5]).value = totalCost
    document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_TotalQtyText_" + parts[5]).value = totalQty

    PageMethods.displayOrder(ProductName, totalQty, totalCost) 
}
在代码隐藏中的displayOrder方法中,我试图将传递给它的信息添加到页面上的占位符中……但每次我看到该对象等于零或基本上什么都没有发生。以下是我的代码:

<System.Web.Services.WebMethod()> _
Public Shared Sub displayOrder(ByVal ProductName As String, ByVal totalQty As Double, ByVal totalCost As Double)

    List.Add(ProductName)
    total = totalQty + totalCost
    'Dim label1 As Global.System.Web.UI.WebControls.Label
    Dim label1 As New Label()
    Dim mainTable As New Table

    Dim textBox As TextBox = New TextBox()
    textBox.ID = "myTextBox"

    Dim PlaceHolder1 As PlaceHolder = Panel2.FindControl("myPlaceHolder")

    PlaceHolder1.Controls.Add(textBox)
protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        int count = 0;

        if (ViewState["Count"] != null)
        {
            count = (int)ViewState["Count"];
            for (int i = 0; i < count; i++)
            {
                PanelControls.Controls.Add(new TextBox { Text = "Textbox " + i.ToString() });
            }
        }
    }
}

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        int count = 0;

        if (ViewState["Count"] != null)
        {
            count = (int)ViewState["Count"];
        }
        count++;
        PanelControls.Controls.Add(new TextBox { Text = "Textbox " + count.ToString() });
        ViewState["Count"] = count;
    }
_
公共共享子显示顺序(ByVal ProductName为字符串,ByVal totalQty为双精度,ByVal totalCost为双精度)
列表。添加(ProductName)
总计=总计数量+总计成本
'Dim label1作为Global.System.Web.UI.WebControl.Label
尺寸标签1作为新标签()
将主表变暗为新表
Dim textBox As textBox=新建textBox()
textBox.ID=“myTextBox”
Dim占位符1作为占位符=面板2.FindControl(“myPlaceHolder”)
占位符1.控件.添加(文本框)
此时如何向页面动态添加一些标签

非常感谢

已使用ASPX代码更新:

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="NewOrder.aspx.vb" Inherits="CafeteriaStock.NewOrder" %>

<%@ Register Assembly="AjaxControlToolkit, Version=4.1.51116.0, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"
    Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
    </asp:ScriptManager>
    <script src="~/Scripts/Extension.min.js" type="text/javascript"></script>   

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">

    <ContentTemplate>

    <asp:Panel ID="Panel1" runat="server" GroupingText="" cssClass="pnl1">
        <div id="div1"  style="text-align:left;width:100%;" >
            <asp:Label ID="lblUnit" runat="server" Text="Please Select a Unit:" cssClass="lbl1"></asp:Label>
            <asp:DropDownList ID="ddnUnits" runat="server" DataSourceID="sqlGetUnits" 
                        DataTextField="Description" DataValueField="UnitID" 
                        AppendDataBoundItems="True" AutoPostBack="True">
                        <asp:ListItem Value="0">Please Select Unit</asp:ListItem>
            </asp:DropDownList>
            <asp:Label ID="lblWeekOf" runat="server" Text="Please Select a Week:" style="padding: 3%;"></asp:Label>
            <asp:TextBox ID="tbWeekOf" runat="server" CssClass="disable_past_dates"></asp:TextBox>
                <asp:MaskedEditExtender ID="MaskedEditExtender1" runat="server" TargetControlID="tbWeekOf" Mask="99/99/9999" MaskType="Date">
                </asp:MaskedEditExtender>
                <asp:ImageButton runat="Server" ID="btnCalendarImage" ImageAlign="Middle" ImageUrl="~/Images/CalendarSmallIcon.png" AlternateText="Click to display calendar" />                               
                <asp:CalendarExtender ID="calCalendarExtender" runat="server" Enabled="True" TargetControlID="tbWeekOf" PopupButtonID="btnCalendarImage">
                </asp:CalendarExtender>    
            <asp:Label ID="Label12" runat="server" Text="Label"></asp:Label>
        <hr />
        <br />      
        </div>
    </asp:Panel>
    <br />    
    <asp:Panel ID="Panel2" runat="server" GroupingText="" cssClass="pnl1">    
     <table id="mainTable" width="100%" align="center">
        <tr>
            <td style="width:10%">
            </td>
            <td style="width:10%">
            </td>
            <td style="width:10%">
            </td>
            <td style="width:10%">
            </td>
            <td style="width:10%">
            </td>
            <td style="width:10%">
            </td>
            <td style="width:10%">
            </td>
            <td style="width:10%">
            </td>
            <td style="width:10%">
            </td>
            <td style="width:10%">
            </td>
        </tr>
        <tr>
             <td colspan="5">
                <asp:ListView ID="ListView1" runat="server"  DataSourceID="LinqDataSource2" >
                    <LayoutTemplate>
                        <table bgcolor="#FFFFCC" id="items">
                            <tr ID="itemPlaceholder" runat="server">
                            </tr>
                        </table>
                    </LayoutTemplate>
                    <ItemTemplate>
                        <tr id="row" runat="server" style="background-color: #CCFFCC"> 
                            <td>
                                <img alt="Images/plus.png" src="Images/plus.png" onclick="toggleGroup(this, '<%# Eval("count") %>');" />
                            </td> 
                            <td colspan="1" >
                               <%#Eval("Category")%>
                            </td>
                        </tr>
                        <asp:ListView ID="ListView3" runat="server" DataSource='<%# Eval("cafItems") %>' >
                            <LayoutTemplate>
                                <tr class="hidden"style="width:50%;">
                                    <td width="5%">
                                        &nbsp
                                    </td> 
                                    <td width="25%">
                                        <asp:Label ID="Label10" runat="server" Text="Product"></asp:Label>
                                    </td>
                                    <td width="5%">
                                        <asp:Label ID="Label9" runat="server" Text="Cost"></asp:Label>
                                    </td>
                                    <td width="5%">
                                        <asp:Label ID="Label98" runat="server" Text="Sun"></asp:Label>
                                    </td>
                                    <td width="5%">
                                        <asp:Label ID="Label1" runat="server" Text="Mon"></asp:Label>
                                    </td>
                                    <td width="5%">
                                        <asp:Label ID="Label2" runat="server" Text="Tue"></asp:Label>
                                    </td>
                                    <td width="5%">
                                        <asp:Label ID="Label3" runat="server" Text="Wed"></asp:Label>
                                    </td>
                                    <td width="5%">
                                        <asp:Label ID="Label4" runat="server" Text="Thu"></asp:Label>
                                    </td>
                                    <td width="5%">
                                        <asp:Label ID="Label5" runat="server" Text="Fri"></asp:Label>
                                    </td>
                                    <td width="5%">
                                        <asp:Label ID="Label6" runat="server" Text="Sat"></asp:Label>
                                    </td>
                                    <td width="15%">
                                        <asp:Label ID="Label7" runat="server" Text="Qty Ordered"></asp:Label>
                                    </td>
                                    <td width="15%">
                                        <asp:Label ID="Label8" runat="server" Text="Total Cost"></asp:Label>
                                    </td>
                                </tr>
                                <tr ID="itemPlaceholder" runat="server" >
                                </tr>
                            </LayoutTemplate>
                            <ItemTemplate>
                                <tr id="row" runat="server" class="hidden" >
                                    <td width="5%">
                                        &nbsp
                                    </td> 
                                    <td width="25%">
                                        <asp:Label ID="ProductNameLabel" runat="server" Text='<%# Eval("Description") %>' />
                                    </td>
                                    <td width="5%">
                                        <asp:Label ID="ProductCostLabel" runat="server" Text='<%# Eval("Cost") %>' />                                
                                    </td>
                                    <td width="5%">
                                        <asp:TextBox ID="SundayQuantityText" runat="server" Width="30px" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
                                    </td>
                                    <td width="5%">
                                        <asp:TextBox ID="MondayQuantityText" runat="server" Width="30px" OnChange="CalculateCost(this.id)"></asp:TextBox>
                                    </td>
                                    <td width="5%">
                                        <asp:TextBox ID="TuesdayQuantityText" runat="server" Width="30px" OnChange="CalculateCost(this.id)"></asp:TextBox>
                                    </td>
                                    <td width="5%">
                                        <asp:TextBox ID="WednesdayQuantityText" runat="server" Width="30px" OnChange="CalculateCost(this.id)"></asp:TextBox>
                                    </td>
                                    <td width="5%">
                                        <asp:TextBox ID="ThursdayQuantityText" runat="server" Width="30px" OnChange="CalculateCost(this.id)"></asp:TextBox>
                                    </td>
                                    <td width="5%">
                                        <asp:TextBox ID="FridayQuantityText" runat="server" Width="30px" OnChange="CalculateCost(this.id)"></asp:TextBox>
                                    </td>
                                    <td width="5%">
                                        <asp:TextBox ID="SaturdayQuantityText" runat="server" Width="30px" OnChange="CalculateCost(this.id)"></asp:TextBox>
                                    </td>
                                    <td width="15%">
                                        <asp:TextBox ID="TotalQtyText" enabled="false" runat="server" Width="90px"></asp:TextBox>
                                    </td>
                                    <td width="15%">
                                        <asp:TextBox ID="TotalCostText" enabled="false" runat="server" Width="90px"></asp:TextBox>
                                    </td>
                                </tr>
                            </ItemTemplate>
                        </asp:ListView>
                    </ItemTemplate>
                    <EmptyDataTemplate>
                        <table>
                            <tr>
                                <td>
                                    No data was returned. 
                                </td>
                            </tr>
                        </table>
                    </EmptyDataTemplate>
                </asp:ListView>
             </td>
              <td colspan="5">
                    <asp:PlaceHolder runat="server" ID="myPlaceHolder"></asp:PlaceHolder>
              </td>
        </tr>
    </table>    
    </asp:Panel> 


   <asp:Table ID="tblOverall" runat="server" BorderStyle="none" CellPadding="0" CellSpacing="0" Width="100%">
        <asp:TableRow ID="TableRow1" runat="server" BorderStyle="none">
            <asp:TableCell ID="TableCell1" runat="server" HorizontalAlign="left" Width="95%">
            </asp:TableCell>   
        </asp:TableRow>                                                                                              
    </asp:Table>  

    </ContentTemplate>

</asp:UpdatePanel>


<script type="text/javascript" language="javascript">

    function toggleGroup(img, numberOfRows) {
        // get a reference to the row and table
        var tr = img.parentNode.parentNode;
        var table = $get('items');
        var src = img.src;

        // do some simple match to determine how many
        // rows we need to hide/show
        var startIndex = tr.rowIndex + 1;
        var stopIndex = startIndex + parseInt(numberOfRows);
        //var startIndex = 1;
        //var stopIndex = startIndex + parseInt(numberOfRows);

        //If the img src ends with plus, then we are expanding the
        // rows. Go ahead and remove the hidden class from the rows
        //  and update the image src
        if (src.endsWith('plus.png')) {
            for (var i = startIndex; i < stopIndex; i++) {
                Sys.UI.DomElement.removeCssClass(table.rows[i], 'hidden');
            }

            src = src.replace('plus.png', 'minus.png');

        }
        else {
            for (var i = startIndex; i < stopIndex; i++) {
                Sys.UI.DomElement.addCssClass(table.rows[i], 'hidden');
            }

            src = src.replace('minus.png', 'plus.png');
        }

        //update the src with the new value
        img.src = src;
    }

    function CalculateCost(idofCell) {
        var parts = idofCell.split("_")
        var totalQty = 0
        var totalCost = 0
        var ProductCost = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_ProductCostLabel_" + parts[5]).innerHTML)
        var ProductName = (document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_ProductNameLabel_" + parts[5]).innerHTML)
        var MonQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_MondayQuantityText_" + parts[5]).value)
        var TuesQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_TuesdayQuantityText_" + parts[5]).value)
        var WedQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_WednesdayQuantityText_" + parts[5]).value)
        var ThursQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_ThursdayQuantityText_" + parts[5]).value)
        var FriQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_FridayQuantityText_" + parts[5]).value)
        var SatQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_SaturdayQuantityText_" + parts[5]).value)
        var SunQty = Number(document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_SundayQuantityText_" + parts[5]).value)

        totalQty = (MonQty + TuesQty + WedQty + ThursQty + FriQty + SatQty + SunQty)
        totalCost = (MonQty + TuesQty + WedQty + ThursQty + FriQty + SatQty + SunQty) * ProductCost

        document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_TotalCostText_" + parts[5]).value = totalCost
        document.getElementById(parts[0] + "_" + parts[1] + "_" + parts[2] + "_" + parts[3] + "_TotalQtyText_" + parts[5]).value = totalQty

        PageMethods.displayOrder(ProductName, totalQty, totalCost)



    }


</script>

</asp:Content>

请选择单位



');" />     没有返回任何数据。
<asp:UpdatePanel ID="Panel1" runat="server">
<ContentTemplate>
<asp:Panel ID="PanelControls" runat="server">
</asp:Panel>
<p>
<asp:Button ID="btnAdd" Text="Add" OnClick="btnAdd_Click" runat="server" />
</p>
</ContentTemplate>
</asp:UpdatePanel>
protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        int count = 0;

        if (ViewState["Count"] != null)
        {
            count = (int)ViewState["Count"];
            for (int i = 0; i < count; i++)
            {
                PanelControls.Controls.Add(new TextBox { Text = "Textbox " + i.ToString() });
            }
        }
    }
}

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        int count = 0;

        if (ViewState["Count"] != null)
        {
            count = (int)ViewState["Count"];
        }
        count++;
        PanelControls.Controls.Add(new TextBox { Text = "Textbox " + count.ToString() });
        ViewState["Count"] = count;
    }