如何在FormView控件中获取选定的值?

时间:2012-08-27 02:46:05

标签: asp.net formview selectedvalue

我正在使用ASP.NET开发的应用程序,我面临的问题是使用FormView控件,FormView控件有ItemTemplate,InsertItemTemplate和EditItemTemplate。

以下是InsertItemTemplate的代码片段:

<asp:FormView ID="FormView1" runat="server" DefaultMode="ReadOnly">
    <InsertItemTemplate>
        <table cellpadding="0" cellspacing="0">
            <tr>
                <td>
                    <asp:Label id="lblPS" runat="server" Text="Process Status"></asp:Label>
                </td>
                <td>
                    <asp:DropDownList ID="ddlPS" runat="server"></asp:DropDownList>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label id="lblAP" runat="server" Text="Action Plan"></asp:Label>
                </td>
                <td>
                    <asp:TextBox id="txtAP" runat="server" Width="230px" TextMode="MultiLine" Rows="5"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click" />  
                </td>
            </tr>
        </table>
    </InsertItemTemplate>
</asp:FormView>

在Page_Load事件中,我将DataSource绑定到DropDownList中,如下所示:

FormView1.ChangeMode(FormViewMode.Insert);

DropDownList ddlPS = FormView1.FindControl("ddlPS") as DropDownList;
ddlPS.DataSource=GetProcessStatus();
ddlPS.DataBind();
ddlPS.Items.Insert(0, new System.Web.UI.WebControls.ListItem("- Please Select -", "- Please Select -"));

绑定到DropDownList和“ - 请选择 - ”的数据还可以。

问题来了,当点击提交按钮时,我想让用户选择DropDownList Value,但DropDownList.SelectedItem.Text总是返回“ - 请选择 - ”。

请告知我如何在InsertItemTemplate中获取用户选择的值。

1 个答案:

答案 0 :(得分:1)

问题出在您的DataBind页面Load事件上。 当您DataBind清除现有值并因此松开所选值时。

下拉列表会记住其中的项目,因此您不需要在每次回发时都使用DataBind。

你的意思应该是这样的。

protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
  {
    DropDownList ddlPS = FormView1.FindControl("ddlPS") as DropDownList;
    ddlPS.DataSource=GetProcessStatus();
    ddlPS.DataBind();
    ddlPS.Items.Insert(0, new System.Web.UI.WebControls.ListItem("- Please Select -", "- Please Select -"));
  }
}