0

我正在使用由 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 值,但 DropDownList.SelectedItem.Text 总是返回我“-请选择-”。

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

4

1 回答 1

1

问题在于您的DataBindon PageLoad事件。当您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 -"));
  }
}
于 2012-08-27T03:32:18.620 回答