Как получить количество выбранных строк сетки данных, даже если ничего не выбрано?

Я использую SfDataGrid и добавил к нему контекстное меню. Проблема, с которой я столкнулся, заключается в том, что если пользователь откроет контекстное меню и сделает выбор без выбранных строк в таблице данных, программа завершится сбоем. Итак, как мне проверить, была ли выбрана строка в методе MenuFlyoutItem_Clicked?

Моё контекстное меню настроено так:

      <FlyoutBase.ContextFlyout>
    <MenuFlyout>
        <MenuFlyoutItem Text="Copy User Name"
                        Clicked="MenuFlyoutItem_Clicked"
                        CommandParameter="UsrName"/>
        <MenuFlyoutItem Text="Copy Password"
                        Clicked="MenuFlyoutItem_Clicked"
                        CommandParameter="Passwd"/>
        <MenuFlyoutItem Text="Copy User Name"
                        Clicked="MenuFlyoutItem_Clicked"
                        CommandParameter="WebSite"/>
    </MenuFlyout>

Пока что мое событие MenuFlyoutItem_Clicked выглядит так:

      private void MenuFlyoutItem_Clicked(object sender, EventArgs e)
{
    // Somewhere up here I have to check if a data grid row
    // was selected.

    MenuFlyoutItem mnuItem = sender as MenuFlyoutItem;
    string takeAct = mnuItem.CommandParameter as string;
    string url = (PasswdVw.CurrentRow as PasswrdInfo).PassUrl;
    
    string msg, retVal;
    msg = retVal = "";
    int idno = (PasswdVw.CurrentRow as PasswrdInfo).PassId;

    switch (takeAct)
    {
        case "UsrName":
            using (SqlConnection c = new SqlConnection(App.ConnStr))
            {
                string query = "select usrname from PassWrds where Id = " + idno;
                using (SqlCommand cmd = new SqlCommand(query, c))
                {
                    c.Open();
                    retVal = cmd.ExecuteScalar().ToString();
                    c.Close();

                    Clipboard.SetTextAsync(retVal);
                }
            }

            msg = "User Name copied.";
            break;
        case "Passwd":
            using (SqlConnection c = new SqlConnection(App.ConnStr))
            {
                string query = "select password from PassWrds where Id = " + idno;
                using (SqlCommand cmd = new SqlCommand(query, c))
                {
                    c.Open();
                    retVal = cmd.ExecuteScalar().ToString();
                    c.Close();
                }

                string result = Crypto.Decrypt(App.secretKey, retVal);

                Clipboard.SetTextAsync(result);
            }

            msg = "Password copied.";
            break;
        case "WebSite":
            //Nothing Yet.
            break;
    }
}

Как определить, выбрана ли строка или даже строка не выбрана?

1 ответ

      if (PasswdVw.CurrentRow == null)
{
    // nothing selected
    return;
} 
else 
{
    // something selected
}
Другие вопросы по тегам