2016-05-19 32 views
0

我想在我的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> 

SQL数据源的DDL

<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

你好,这给一抡:

ddlStatus.SelectedItem.Text == "Complete"