2016-02-19 3 views
0

Привет, У меня есть метод, который отправляет мне данные из таблицы sql, и я хочу, чтобы - когда я нажимаю кнопку в datagridview - этот параметр отправки метода и параметр будут иметь значение ID (например, на рисунке 107 или 106). Ниже на картинке находится datagridview с 2 кнопками и столбцом идентификатора.кнопка отправить параметр методу

enter image description here

public ObservableCollection<MyClass> ReadUpdate(int id_update) 
{ 
ObservableCollection<MyClass> result = new ObservableCollection<MyClass>(); 
string nwConn = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString; 
SqlDataReader dr; 
SqlConnection conn = new SqlConnection(nwConn); 
try 
{ 
SqlCommand cmd = new SqlCommand(); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Connection = conn; 
cmd.CommandText = "Insert_Update"; 
cmd.Parameters.AddWithValue("@id_update", id_update); 
conn.Open(); 
dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
MyClass lin = new MyClass(); 

lin.id = dr.GetInt32(1); 
if (!dr.IsDBNull(2)) lin.other = dr.GetString(2); 
if (!dr.IsDBNull(3)) lin.barkod = dr.GetString(3); 
if (!dr.IsDBNull(4)) lin.pw = dr.GetInt32(4); 

result.Add(lin); 
} 
dr.Close(); 
return result; 

} 
catch (SqlException e) 
{ 
MyClass lin = new MyClass(); 
lin.other = e.Message; 

result.Add(lin); 
return result; 

} 
finally 
{ 
conn.Close(); 

}; 
} 

Мой класс:

public class PIS 
{ 
public int ID { get; set; } 
} 

И моя кнопка:

private void btnUpdate_Click(object sender, System.Windows.RoutedEventArgs e) 
{ 
pis_update = (PIS)((Button)sender).DataContext; 
ChildWindow_Update childWindow_update = new ChildWindow_Update(); 
childWindow_update.DataContext = ((Pismo)((Button)sender).DataContext).Id_Pismo; 
childWindow_update.Closed += ChildWindow_Update_Closed; 
childWindow_update.Show(); 
} 

public ChildWindow_Update() 
{ 
InitializeComponent(); 
ServiceReference1.Service1Client webService = new ServiceReference1.Service1Client(); 
webService.ReadUpdateAsync((int)this.DataContext); 
webService.ReadUpdateCompleted += WebService_ReadUpdateCompleted; 

private void WebService_ReadUpdateCompleted(object sender, ServiceReference1.ReadUpdateCompletedEventArgs e) 
{ 
if (e.Result != null) 
{ 
//do something 

} 
} 

У меня есть ошибка в webService.ReadUpdateAsync ((INT) this.DataContext); "Исключение исключительных исключений".

+0

Пожалуйста, прочитайте этот вопрос о NullReferenceException] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it). –

ответ

1

Во время вызова вашего конструктора ваш DataContext еще не установлен. Вы должны сделать id конструктором, если он вам нужен в конструкторе.

Вообще говоря, вы должны использовать MVVM и шаблон команды, где вы можете указать свои данные id в качестве параметра команды в вашем XAML.

Смежные вопросы