需要访问下拉列表中的记录文本

时间:2016-05-19 15:29:54

标签: c# asp.net sql-server

我正在尝试在GridView gvTaskDashboard中为OnRowUpdating构建一些处理。我想检查一个状态下拉列表是否已选中完成,是否已在完成日期文本框中输入日期。我确定问题出在我的if语句试图测试Complete,但因为下拉列表绑定到sql表的索引,我不知道如何检查所选索引的文本值。我确信我可以使用if (ddlStatus.SelectedValue == "5")作为例子,但作为一名程序员,我认为从维护的角度来看,检查“完整”更有意义。

DDL标记

<asp:DropDownList ID="ddlStatus" runat="server" AutoPostBack="True" DataSourceID="ddlStatusSQL" 
DataTextField="TaskStatusName" DataValueField="TaskStatusID" SelectedValue='<%# Bind("TaskStatusID") %>'>
</asp:DropDownList>

DDL的SQL数据源

<asp:SqlDataSource ID="ddlStatusSQL" runat="server" ConnectionString="<%$ ConnectionStrings:ProWorxConnectionString %>" 
SelectCommand="SELECT [TaskStatusID], [TaskStatusName] FROM [tblTaskStatus] 
ORDER BY [TaskStatusType], [TaskStatusName]">
</asp:SqlDataSource>

代码隐藏

protected void gvTask_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow gvr = gvTaskDashboard.Rows[e.RowIndex];

    // Get Controls
    DropDownList ddlStatus = (DropDownList)gvr.FindControl("ddlStatus");
    TextBox txtCompDate = (TextBox)gvr.FindControl("txtCompDate");

    // Test for Complete Date if Complete status selected
    if (string.IsNullOrWhiteSpace(txtCompDate.Text) && ddlStatus.SelectedValue == "Complete")
    {
        // Throw Error
        ClientScript.RegisterStartupScript(GetType(), "error", "alert('Enter Complete Date if Status is Complete.');", true);
    }
    else { TaskDashboardSQL.Update(); }
}

1 个答案:

答案 0 :(得分:1)

嗨,请给它一个旋转:

ddlStatus.SelectedItem.Text == "Complete"