我这里有个页面中的两个listbox之间相互移动选项,
可是这种移动会回发到服务器,虽然实现移动的两个按钮已经设定causesvalidation=false,但是
还是会出现以下问题
1)虽然其他requiredfiledvalidator不会被触发,但是requiredfiledvalidator的错误信息会显示出来。
2)如果本页面的javascript做的无刷新连动菜单已选择,导致其选项丢失请问,两个listbox之间移动选项有没有办法不回发到服务器,而直接在客户端执行?如何解决?
可是这种移动会回发到服务器,虽然实现移动的两个按钮已经设定causesvalidation=false,但是
还是会出现以下问题
1)虽然其他requiredfiledvalidator不会被触发,但是requiredfiledvalidator的错误信息会显示出来。
2)如果本页面的javascript做的无刷新连动菜单已选择,导致其选项丢失请问,两个listbox之间移动选项有没有办法不回发到服务器,而直接在客户端执行?如何解决?
或者 用客户端的控件不就可以了吗?
>>>1)虽然其他requiredfiledvalidator不会被触发,但是requiredfiledvalidator的错误信息会显示出来估计你在什么地方调用了Page.Validate(),把它去掉,在你的按钮或其他需要验证的地方调用它,然后检查Page.InValid
<form runat="server">
<asp:TextBox id="txt" runat="server" /><asp:RequiredFieldValidator id="rfv" runat="server" ControlToValidate="txt" ErrorMessage="***Required***" /><table>
<tr>
<td>
<asp:ListBox id="lb1" runat="server" Rows="4" SelectionMode="Multiple">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
<asp:ListItem Value="3">3</asp:ListItem>
<asp:ListItem Value="4">4</asp:ListItem>
</asp:ListBox>
</td>
<td>
<asp:Button id="btn1" runat="server" Text="<<" OnClick="Button_Click" CausesValidation="false"/>
<asp:Button id="btn2" runat="server" Text="<" OnClick="Button_Click" CausesValidation="false"/>
<asp:Button id="btn3" runat="server" Text=">" OnClick="Button_Click" CausesValidation="false"/>
<asp:Button id="btn4" runat="server" Text=">>" OnClick="Button_Click" CausesValidation="false"/>
<asp:Button id="btn5" runat="server" Text="Submit" OnClick="ValidateData" />
</td>
<td>
<asp:ListBox id="lb2" runat="server" Rows="4" SelectionMode="Multiple">
</asp:ListBox>
</td>
</tr>
</table>
</form>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
// if (IsPostBack)
// Page.Validate();
}
void ValidateData(Object sender, EventArgs e)
{
Page.Validate();
if (!Page.IsValid)
return; Response.Write("Data is good");
}
void Button_Click(Object sender, EventArgs e)
{
Button btn = (Button)sender;
if (btn == btn1)
MoveItems(lb2, lb1,true);
else if (btn == btn2)
MoveItems(lb2,lb1,false);
else if (btn == btn3)
MoveItems(lb1,lb2,false);
else if (btn == btn4)
MoveItems(lb1,lb2,true);
}void MoveItems(ListBox lbFrom, ListBox lbTo, bool bAll)
{
int i=0;
while (i < lbFrom.Items.Count)
{
if (bAll || lbFrom.Items[i].Selected)
{
lbFrom.Items[i].Selected=false;
lbTo.Items.Add(lbFrom.Items[i]);
lbFrom.Items.RemoveAt(i);
}
else
i++;
}}</script>
你可以用js写两个listbox联动啊
如果用js写的话,最后获取所得到的listbox的值是如何来获取啊?如果用javascript的话,那么‘目的’listbox的值就无法在服务器端获取了