如何动态生成jQuery以填充<;选择>;使用C#

本文关键字:lt 填充 选择 使用 gt jQuery 何动态 动态 | 更新日期: 2023-09-27 18:28:11

我的问题几乎说明了一切。我已经尝试了很多。我的代码可以编译,但不起作用(尽管出现了)。此外,错误控制台中没有任何Javascript错误,所以我有点困惑自己做错了什么。

编辑:为了让人们更清楚,我将强调这个问题

问题是选择框没有得到任何选项/没有被填充

这是代码头中的C#。

  protected void GroupList_SelectedIndexChanged(object sender, EventArgs e)
    {  updategroupEntry(); }
    protected void updategroupEntry() 
    {
        //this is used to populate the second group list.
        string JSCMD = "";
        JSCMD += "$('#grouplist2').empty();";
        foreach (ListItem li in GroupList.Items)
        {
            if (li.Selected)
            {
                JSCMD += "$('#groupList2').append('<option value=" + li.Value + ">" + li.Text + "</option>');";
            }
        }
        JSCMD += "alert('I send javascript correctly');";
        sendGenericscript(JSCMD);
    }
//sends scripts to the webpage
   private void sendGenericscript(string script) 
    {
        const string someScript = "alertMe";
        //send the built script to the website.
        ScriptManager.RegisterStartupScript(this.Page, this.GetType(), someScript, script, true);
    }

这整件事是由我的aspx中的SelectedIndexChanged事件调用的。

    <asp:Listbox AutoPostback="True" ID="GroupList" runat="server" Width="166px" 
                     SelectionMode="Multiple" OnSelectedIndexChanged="GroupList_SelectedIndexChanged" 
                    DataSourceID="GroupSource" DataTextField="GroupName" DataValueField="GroupID">
                </asp:Listbox>

受影响的人在这里。

  <select style="width:150px;" id="grouplist2">
  </select>

测试/调试警报框确实出现了,所以我知道我的脚本正在到达页面。

这是我从主页获取jquery的页面。

             <asp:ScriptManager ID="ScriptManager1" runat="server">
                <Scripts>
                    <asp:ScriptReference Path="~/Scripts/jquery-2.0.2.js" />
                    <asp:ScriptReference Path="~/Scripts/jqueryui.js" />
                    <asp:ScriptReference Path="~/Scripts/menubar.js" />
                    <asp:ScriptReference Path="~/Scripts/AutoSuggestBox.js" />
                </Scripts>
            </asp:ScriptManager>

这是对我页面中内容的引用。

 <%@ Page Title="MassUpdate" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="Update.aspx.cs" Inherits="AdminSite.Update" MaintainScrollPositionOnPostback="true" %>
 <asp:Content ID="Content1" ContentPlaceHolderID="headcontent" runat="server">
 </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server" >      
        <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server"  >
            <Scripts>
                    <asp:ScriptReference Path="~/Scripts/MassUpdate.js" />  
            </Scripts>
        </asp:ScriptManagerProxy>

如何动态生成jQuery以填充<;选择>;使用C#

我仍然不确定为什么不使用服务器端代码填充选择框,但可能需要推迟脚本执行,直到加载DOM为止。你能试试这个吗:

string JSCMD = "$(function(){";
    JSCMD += "$('#grouplist2').empty();";
    foreach (ListItem li in GroupList.Items)
    {
        if (li.Selected)
        {
            JSCMD += "$('#groupList2').append('<option value=" + li.Value + ">" + li.Text + "</option>');});";
        }
    }