获取控制值切换视图,作为多视图的一部分,当

我在我的aspx页面下面的代码:

<asp:Button id="display_button" runat="server" Text="Display" OnClick="Button1_Click" /> &nbsp; <asp:Button id="edit_button" runat="server" Text="Edit" OnClick="Button2_Click" /> &nbsp; <asp:Button id="save_button" runat="server" Text="Save" OnClick="Button3_Click" Visible="false" /> &nbsp; <asp:MultiView id="MultiView1" runat="server" ActiveViewIndex="0"> <asp:View id="View1" runat="server"> <asp:FormView id="view_program" runat="server"> <ItemTemplate> <%# Eval("status").ToString().Trim() %> </ItemTemplate> </asp:FormView> </asp:View> <asp:View id="View2" runat="server"> <asp:FormView id="edit_program" runat="server"> <ItemTemplate> <asp:DropDownList id="p_status" runat="server"> </asp:DropDownList> </ItemTemplate> </asp:FormView> </asp:View> </asp:MultiView>

并附着在代码隐藏页的按钮功能如下:

protected void Button1_Click(object sender, EventArgs e) { MultiView1.SetActiveView(View1); save_button.Visible = false; } protected void Button2_Click(object sender, EventArgs e) { MultiView1.SetActiveView(View2); save_button.Visible = true; } protected void Button3_Click(object sender, EventArgs e) { DropDownList p_status = edit_program.FindControl("p_status") as DropDownList; var status = p_status.SelectedValue; Label1.Text = status; //save_button.Visible = false; //MultiView1.SetActiveView(View1); }

这个想法是,有两个观点,第一个显示的信息,如果用户希望编辑的信息,他们点击按钮2,它改变视图编辑模式,它具有控制(下拉列表,文本字段等)。 这也使得“保存”按钮出现。

我想使发生的事情是,当点击保存按钮时,它会抓住所有的值从各个领域,更新的对象,然后更新数据库。 然后,它会翻转回来的更新信息,以VIEW1。

问题是,你可以在看void Button3_Click ,我试图抓住从控制,p_status的值,但它只是变得原始值。 例如,菜单有三个值,“绿色”,“黄色”和“红色”。 绿色是默认值,并显示视图2当选择。 但是,如果我选择黄色或红色,并单击保存,而不是标签被更新,以显示这两个值中的一个,它始终显示绿色。

有任何想法吗?

编辑:每请求如下页面加载功能

protected void Page_Load(object sender, EventArgs e) { try { Person myPerson = new Person(userid); TestProgram myProgram = new TestProgram(id); List<TestProgram> program = new List<TestProgram> { myProgram }; view_program.DataSource = program; view_program.DataBind(); edit_program.DataSource = program; edit_program.DataBind(); DropDownList p_status = edit_program.FindControl("p_status") as DropDownList; p_status.Items.Add(new ListItem("Green", "Green")); p_status.Items.Add(new ListItem("Yellow", "Yellow")); p_status.Items.Add(new ListItem("Red", "Red")); //myProgram.Status = "Red"; p_status.SelectedValue = myProgram.Status; } catch (Exception ex) { Response.Write(ex); Label1.Text = ex.ToString(); } }

--------------解决方案-------------

哎呦......错过了一个小成才..我的坏

当预期asp.net没有表现,这是你最好的朋友:MSDN:ASP.NET页面生命周期

经进一步审查...

有几个问题在这里。 您的下拉与“p_status”的ID列表控件包含Multiview内(我忘了是什么意思......),你需要移动代码来填充p_status进入检查,看看是否Multiveiw1.ActiveView后预渲染=视图2。 因为它永远是一个回,你需要在页面周期的后期绑定值

分类:C# 时间:2015-03-15 人气:0
本文关键词: asp.net
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.274 (s). 10 q(s)