Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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
C# 从服务器和客户端创建动态控件以从服务器访问_C#_Javascript_Asp.net_Dynamic Controls - Fatal编程技术网

C# 从服务器和客户端创建动态控件以从服务器访问

C# 从服务器和客户端创建动态控件以从服务器访问,c#,javascript,asp.net,dynamic-controls,C#,Javascript,Asp.net,Dynamic Controls,我正在使用C-.net framework 1.1构建asp.net web应用程序。 我正在尝试构建一个包含文本框的表,它应该从服务器和客户端构建,服务器应该访问文本框中的数据 无法上载图像,因此结构基本上是: <table> <row> <Cell></Cell> <Cell>add-image</Cell> <Cell></Cell> <row> <Cell>label&

我正在使用C-.net framework 1.1构建asp.net web应用程序。 我正在尝试构建一个包含文本框的表,它应该从服务器和客户端构建,服务器应该访问文本框中的数据

无法上载图像,因此结构基本上是:

<table>
<row> <Cell></Cell> <Cell>add-image</Cell> <Cell></Cell>
<row> <Cell>label</Cell> <Cell>TextBox</Cell> <Cell>delete Image</Cell> </row>
<row> <Cell>label</Cell> <Cell>TextBox</Cell> <Cell>delete Image</Cell> </row>
</table>
<button> submit </button>
然后,当用户单击+符号时,他可以通过客户端添加新行:

function createNewSlot(e,MyArgs)
        {
        //add to existing table created on server
        var day=MyArgs[0];
        var table=document.getElementById("TimeIntervalsTable");
        var rowCount=table.rows.length;
        var row=table.insertRow(rowCount);
        //row.insertCell(0).innerHTML=day;
        //var newCell=row.insertCell(0).innerHTML='<class="dayLabels">';
        var newCell=row.insertCell(0);
        newCell.className="dayLabels";
        newCell.innerHTML=day;

        //document.getElementById("TimeIntervalsTable").rows[rowCount].cells[0].Text=day;
        var timeString="From: "+MyArgs[1].toString().concat(MyArgs[2].toString())+"                 To: "+ MyArgs[3].toString().concat(MyArgs[4].toString());
        row.insertCell(1).innerHTML='<input type="text" class="TimeSlot"  runat="server" >'
        document.getElementById("TimeIntervalsTable").rows[rowCount].cells[1].firstChild.value=timeString;
        row.insertCell(2).innerHTML='<input type="Image" src="images/Remove-icon.png" onClick="deleteRow(this)" >';
        row.insertCell(3).innerHTML='<input type="Image" src="images/edit-icon.png" >';
        e.preventDefault ? e.preventDefault() : e.returnValue = false;

    }
单击“提交”后,我想访问所有文本框中的数据

我知道有很多关于这个问题的数据,但是找不到我需要的。
谢谢

您最好用服务器端代码替换javascript。例如,在按钮后面创建服务器端代码以添加服务器端控件。这样,您可以在下次回发时检索这些新控件值。
客户端创建的控件永远不会成为服务器端。

服务器端的控件用于生成html并显示它。当然,您可以从这些控件中检索值,但是由于在加载页面时会显示控件,因此您可以使用javascript生成html,并且在服务器端只需要处理逻辑。因此,您的问题的解决方案如下:

在服务器端实现生成控件并显示它们的代码

在服务器上实现一个API,该API可以处理您的事件,比如+符号的add命令

为客户端实现一个原型,该原型通过AJAX将命令发送到服务器,并处理服务器响应,就像在添加新项时生成html一样

在客户端创建事件处理程序,在客户端操作时调用原型所需的命令


客户端创建的控件永远不会成为服务器端。-不完全正确。客户端创建的控件将发送到服务器,服务器不会将它们识别为服务器生成的控件。它们仍将在答复中提供。我经常使用javascript来允许用户创建文件类型的额外输入,并且在服务器上处理它们没有问题。您必须手动读取服务器端的控件。您能解释一下一般的操作方法吗?目前,在调试代码时(回发到服务器时),表是空的,尽管我通过客户端添加了几行。
function createNewSlot(e,MyArgs)
        {
        //add to existing table created on server
        var day=MyArgs[0];
        var table=document.getElementById("TimeIntervalsTable");
        var rowCount=table.rows.length;
        var row=table.insertRow(rowCount);
        //row.insertCell(0).innerHTML=day;
        //var newCell=row.insertCell(0).innerHTML='<class="dayLabels">';
        var newCell=row.insertCell(0);
        newCell.className="dayLabels";
        newCell.innerHTML=day;

        //document.getElementById("TimeIntervalsTable").rows[rowCount].cells[0].Text=day;
        var timeString="From: "+MyArgs[1].toString().concat(MyArgs[2].toString())+"                 To: "+ MyArgs[3].toString().concat(MyArgs[4].toString());
        row.insertCell(1).innerHTML='<input type="text" class="TimeSlot"  runat="server" >'
        document.getElementById("TimeIntervalsTable").rows[rowCount].cells[1].firstChild.value=timeString;
        row.insertCell(2).innerHTML='<input type="Image" src="images/Remove-icon.png" onClick="deleteRow(this)" >';
        row.insertCell(3).innerHTML='<input type="Image" src="images/edit-icon.png" >';
        e.preventDefault ? e.preventDefault() : e.returnValue = false;

    }