Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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# 使用ASP.net C从html选择列表获取所有项目#_C#_Javascript_Html_Asp.net_List - Fatal编程技术网

C# 使用ASP.net C从html选择列表获取所有项目#

C# 使用ASP.net C从html选择列表获取所有项目#,c#,javascript,html,asp.net,list,C#,Javascript,Html,Asp.net,List,我有以下选择列表: <select name="Context" id="Context" size="5"> <option>Context1</option> <option>Context2</option> <option>Context3</option> <option>Context4</option> <option>Context5</option>

我有以下选择列表:

<select name="Context" id="Context" size="5">
<option>Context1</option>
<option>Context2</option>
<option>Context3</option>
<option>Context4</option>
<option>Context5</option>
</select>

创建一个隐藏字段(runat=server)并将洗牌后的数据存储到隐藏字段中;您可以通过
string itemsOrderedChanged=Request.Form[]访问服务器端隐藏字段的内容

您可以获得所有类似的项目

var ddlArray= new Array();
var ddl = document.getElementById('Context');
for (i = 0; i < ddl.options.length; i++) {
    ddlArray[i] = ddl .options[i].value;
}
var ddlArray=new Array();
var ddl=document.getElementById('Context');
对于(i=0;i

现在将此JavaScript数组传递给您的代码

一个答案是修改
选择
使其成为
列表框
,然后在服务器上以编程方式访问它:

<asp:ListBox runat="server" name="lstContext" id="lstContext" size="5">
    <asp:ListItem>Context1</asp:ListItem>
    <asp:ListItem>Context2</asp:ListItem>
    <asp:ListItem>Context3</asp:ListItem>
    <asp:ListItem>Context4</asp:ListItem>
    <asp:ListItem>Context5</asp:ListItem>
</asp:ListBox>

您的
javascript
应该仍然可以在
列表框中工作,就像它在
select
中一样,因此这应该不会受到影响。

尝试像这样将javascript值传递给隐藏字段

var hidden=document.getElementById('hidValue');
var string strValues="";
for(var i=0i<ddlArray.Length;i++){
 strValues+=ddlArray[i]+",";
}

hidden.value=strValues;

您可以只获取所选项目的值。它不会发布整个列表。我以前实现过listbox解决方案,但发现它非常慢,因为每次项目上移/下移时它都会回调服务器。我需要能够在客户端使用Javascript移动项目。我试图让Javascript移动列表框中的项目,但没有成功。谢谢。我尝试过用几种不同的方式将其存储为隐藏字段,但无法在ASP中访问它。你有关于如何做的更多信息吗?谢谢。将其传递给c#code behind就是问题所在。我似乎不能用HiddenField来做这件事。你有什么建议吗?谢谢。我使用以下命令将数据发送到代码beind:HTML/ASP:Javascript:document.getElementById(“ContextVals”).value=ddlArray;ASP.Net C#:Request.Form[“ContextVals”]
for (int i = 0; i < lstContext.Items.Count; i++)
{
    string item = lstContext.Items[i].Value;
    // Do something with it
}
var hidden=document.getElementById('hidValue');
var string strValues="";
for(var i=0i<ddlArray.Length;i++){
 strValues+=ddlArray[i]+",";
}

hidden.value=strValues;
protected HtmlControls.HtmlInputHidden hidValue;

protected void Page_Load(object sender, System.EventArgs e)
{
   dynamic hiddenValue = hidValue.Value;
   string [] arr=hiddenValue.Split(",");
}