#c# #linklabel
Вопрос:
Я пытаюсь показать некоторые данные из моей таблицы, нажав на метку ссылки, но когда я запускаю приложение, у меня возникает ошибка, например : Объект не содержит определения тега и нет доступной ошибки метода расширения
Строка ошибки : int AppID = (метка ссылки)отправитель.Метка;
Код вы, пожалуйста, помогите мне исправить эту ошибку или, если у вас есть другая идея, чтобы получить идентификатор
Вот мой код :
private void ShowAppointmentDetail(object sender, EventArgs e)
{
int appID = (LinkLabel)sender.Tag;
SqlCommand sql = new SqlCommand("select * from RDV whereID_RDV = {appID}");
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter(sql);
sda.Fill(dt);
if (dt.Rows.Count > 0)
{
DataRow row = dt.Rows[0];
{
frmManageAppointment withBlock = new frmManageAppointment();
withBlock.Nom.Text = row["Nom"].ToString();
withBlock.Prénom.Text = row["Prénom"].ToString();
withBlock.NUM.Text = row["Num"].ToString();
withBlock.date.Text = row["DateRDV"].ToString();
withBlock.ShowDialog();
}
DisplayCurrentDate();
}
}
Спасибо
Комментарии:
1. во-первых ,
Tag
свойство является anobject
, и вы не можете получить его непосредственно в anint
, оно нуждается(int)
в приведении илиint.Parse
т. Д. Во — вторых, событие, которое вы используете, не предназначено для нажатияlinklabel
, поэтомуsender
не содержит никакихlinklabel
атрибутов. вы можете создать переменную, чтобы переноситьappID
ее . почему вы используетеTag
?!2. var t = (отправитель как ссылка).Тег; затем вы можете преобразовать значение тега (объект) в целое число, если оно не равно нулю
3. Первая строка должна гласить (синтаксис сопоставления шаблонов C#8):
if (sender is not LinkLabel lili || lili.Tag is not int appID) return;
4.
int appID = (LinkLabel)sender.Tag;
->int appID = (int)((LinkLabel)sender).Tag;
5. Спасибо за ваш отзыв — @Steve да, это правильно, это решает мою проблему … Огромное спасибо!
Ответ №1:
private void ShowAppointmentDetail(object sender, EventArgs e)
{
Was : int appID = (LinkLabel)sender.Tag;
Answer : var appID = (sender as LinkLabel).Tag;
SqlCommand sql = new SqlCommand("select * from RDV whereID_RDV = {appID}");
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter(sql);
sda.Fill(dt);
if (dt.Rows.Count > 0)
{
DataRow row = dt.Rows[0];
{
frmManageAppointment withBlock = new frmManageAppointment();
withBlock.Nom.Text = row["Nom"].ToString();
withBlock.Prénom.Text = row["Prénom"].ToString();
withBlock.NUM.Text = row["Num"].ToString();
withBlock.date.Text = row["DateRDV"].ToString();
withBlock.ShowDialog();
}
DisplayCurrentDate();
}
}