如何动态生成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>
我仍然不确定为什么不使用服务器端代码填充选择框,但可能需要推迟脚本执行,直到加载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>');});";
}
}