Как получить количество выбранных строк сетки данных, даже если ничего не выбрано?
Я использую 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
}