asp:listbox无法获取options?
在一个ascx页面代码如下,在调用javascript的时候,无法获取asp:listbox服务器组件的options<%@ Register TagPrefix="polymorphik" Namespace="Polymorphik.Web.UI.WebControls" Assembly="Polymorphik.Web.UI.WebControls" %>
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="CtrlProtocolRight.ascx.cs" Inherits="Polymorphik.PolyMedic.Central.CtrlProtocolRight" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<LINK href="Default.css" type="text/css" rel="stylesheet">
<script language="javascript" src="../Javascript/utils.js"></script>
<script language="javascript">
function addSelectedGroup()
{
var lstGroup;
var lstMember;
var i;
var items;
var newMember;
lstGroup = getRef("lstNonMember");
lstMember = getRef("lstMember");
items = lstGroup.options;
for (i = 0; i < items.length; i++)
{
if (items(i).selected)
{
newMember = document.createElement("OPTION");
newMember.value = items(i).value;
newMember.text = items(i).text;
lstMember.add(newMember);
}
}
for (i = items.length - 1; i >= 0; i--)
{
if (items(i).selected)
{
lstGroup.remove(i);
}
}
}
function removeSelectedMember()
{
var lstGroup;
var lstMember;
var i;
var j;
var items;
var newGroup;
lstGroup = getRef("lstNonMember");
lstMember = getRef("lstMember");
items = lstMember.options;
for (i = 0; i < items.length; i++)
{
if (items(i).selected)
{
newGroup = document.createElement("OPTION");
newGroup.value = items(i).value;
newGroup.text = items(i).text;;
lstGroup.add(newGroup);
}
}
for (i = items.length - 1; i >= 0; i--)
{
if (items(i).selected)
{
lstMember.remove(i);
}
}
}
function selectAllGroup()
{
var lstGroupr;
var i;
lstGroup = getRef("lstNonMember");
for (i = 0; i < lstGroup.options.length; i++)
lstGroup.options(i).selected = true;
}
function selectAllMember()
{
var lstMember;
var i;
lstMember = getRef("lstMember");
for (i = 0; i < lstMember.options.length; i++)
lstMember.options(i).selected = true;
}
function addAllGroup()
{
selectAllGroup();
addSelectedGroup();
}
function removeAllMember()
{
selectAllMember();
removeSelectedMember();
}
</script>
<TABLE id="Table1">
<TR>
<TD>
<table width="100%">
<tr>
<td align="left" colspan="2"><asp:label id=lblProtocolName Text='<%# DataBinder.Eval(m_ProtocolDataSet, "Tables[Protocol].DefaultView.[0].ProtocolName") %>' runat="server" CssClass="title1"></asp:label></td>
<td></td>
</tr>
<tr>
<td align="right" width="20%"><asp:label id="lblCreater" runat="server" Font-Bold="True">CreatedBy :</asp:label></td>
<td colspan="2"><asp:label id=lblCreatedBy Text='<%# DataBinder.Eval(m_ProtocolDataSet, "Tables[Protocol].DefaultView.[0].CreatedBy") %>' runat="server" Font-Bold="True"></asp:label></td>
</tr>
<tr>
<td align="right" width="20%"><asp:label id="lblCreatTime" runat="server" Font-Bold="True">CreatedDate :</asp:label></td>
<td colspan="2"><asp:label id=lblCreatedDate Text='<%# DataBinder.Eval(m_ProtocolDataSet, "Tables[Protocol].DefaultView.[0].CreatedDate") %>' runat="server" Font-Bold="True"></asp:label></td>
</tr>
<tr>
<td align="right" width="20%"><asp:label id="lblModifer" runat="server" Font-Bold="True">ModifiedBy :</asp:label></td>
<td colspan="2"><asp:label id="lblModifiedBy" Text='<%# DataBinder.Eval(m_ProtocolDataSet, "Tables[Protocol].DefaultView.[0].ModifiedBy") %>' runat="server" Font-Bold="True"></asp:label></td>
</tr>
<tr>
<td align="right" width="20%"><asp:label id="lblModifyTime" runat="server" Font-Bold="True">ModifiedDate :</asp:label></td>
<td colspan="2"><asp:label id="lblModifiedDate" Text='<%# DataBinder.Eval(m_ProtocolDataSet, "Tables[Protocol].DefaultView.[0].ModifiedDate") %>' runat="server" Font-Bold="True"></asp:label></td>
</tr>
</table>
</TD>
</TR>
<TR>
<TD>
<TABLE id="Table2" cellSpacing="0" cellPadding="0">
<TR>
<TD width="10%"></TD>
<TD class="fieldGroupHeader" noWrap>Non Members</TD>
<TD align="center" width="55"></TD>
<TD noWrap><SPAN class="fieldGroupHeader">Members</SPAN></TD>
</TR>
<TR>
<TD></TD>
<TD noWrap>
<asp:listbox id="lstNonMember" runat="server" CssClass="defaultTextbox" SelectionMode="Multiple" Rows="10" DataValueField="GroupID" DataTextField="GroupName" DataMember="Group" DataSource="<%# m_GroupDataSet %>" Width="180px">
</asp:listbox></TD>
<TD align="center" width="55">
<INPUT id="btnAdd" style="WIDTH: 32px; HEIGHT: 24px" onclick="addSelectedGroup()" type="button"
value=">" name="btnAdd"><BR>
<INPUT id="btnAddAll" style="WIDTH: 32px; HEIGHT: 24px" onclick="addAllGroup()" type="button"
value=">>" name="btnAddAll"><BR>
<INPUT id="btnRemove" style="WIDTH: 32px; HEIGHT: 24px" onclick="removeSelectedMember()"
type="button" value="<" name="btnRemove"><BR>
<INPUT id="btnRemoveAll" style="WIDTH: 32px; HEIGHT: 24px" onclick="removeAllMember()"
type="button" value="<<" name="btnRemoveAll"></TD>
<TD noWrap><SELECT class="defaultTextbox" id="lstMember" style="WIDTH: 180px" multiple size="10" name="lstMember"
runat="server"></SELECT></TD>
</TR>
</TABLE>
</TD>
</TR>
<TR>
<TD></TD>
</TR>
</TABLE>
--------------------编程问答-------------------- getRef 这个函数怎么写的 --------------------编程问答-------------------- getRef是这样一的
function getRef(id)
{
if (isIE) return document.all[id];
if (isNS) return document.layers[id];
} --------------------编程问答-------------------- 你查看一下 通过getRef返回的对象是否为null
对于ascx页面,当放到aspx页面后,ascx中的Id(or name?)会被更改 --------------------编程问答-------------------- 搞定,谢谢楼上的,是要用getRef("lstNonMember").ClientID;
没取到options的原因是原来的getRef("lstNonMember")是取的服务器端ID;
补充:.NET技术 , ASP.NET