Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gridview RowCommand event with DropDownList is not working

I have created a few DropDownLists that get populated with data from a database. The first lines of the Dropdownlists are ListItem:

<asp:DropDownList ID="ddlChange_Requestor" runat="server" AppendDataBoundItems="True"  CssClass="ddlChange_Requestor">
    <asp:ListItem>Change Requestor</asp:ListItem>

enter image description here

I also have a GridView that has a RowCommand event on Select button.

enter image description here

When I press Select the DropDownLists will get back whatever value that the respected column/row has:

protected void gwActivity_RowCommand(object sender, GridViewCommandEventArgs e)
{
    {
        GridViewRow row = ((e.CommandSource as Control).NamingContainer as GridViewRow);
        txtActivity.Text = row.Cells[2].Text;
        ddlChange_Requestor.SelectedValue = row.Cells[10].Text;
    }
}

This works when Change Request column/row in the GridView has value but not when it's "white-space" / "Empty" / "Null". I do not really know how to fix it?

I would like to be able to do something like:

ddlChange_Requestor.SelectedValue = isnullOrwhitespace(row.Cells[10].Text , "Change Requestor");

However I would only want this in the background because I would like to have empty row in GridView but on RowCommand Select should understand that empty means ListItem value.

Is this possible?

like image 732
Nils Avatar asked Mar 29 '18 10:03

Nils


1 Answers

Would it not simply be checking if the value in Cell 10 is empty?

if (!string.IsNullOrEmpty(row.Cells[10].Text) && row.Cells[10].Text != "&nbsp;")
{
    ddlChange_Requestor.SelectedValue = row.Cells[10].Text;
}
else
{
    ddlChange_Requestor.SelectedIndex = 0;
}

Assuming ddlChange_Requestor is a DropDown outside the GridView.

And if you are unsure if the cell value exists in the DLL, you can do a check first.

if (!string.IsNullOrEmpty(row.Cells[10].Text))
{
    string value = row.Cells[10].Text;

    if (ddlChange_Requestor.Items.Cast<ListItem>().Any(x => x.Value == value))
    {
        ddlChange_Requestor.SelectedValue = value;
    }
    else
    {
        ddlChange_Requestor.SelectedIndex = 0;
    }
}
like image 79
VDWWD Avatar answered Nov 07 '22 01:11

VDWWD