Stworzyłem SharePoint WebPart i mambiorąc pod uwagę niestandardowy zestaw narzędzi, który zawiera siatkę (a dokładniej Telerik RadGrid, choć nie jest to istotne). Wypełniłem siatkę i utworzyłem obiekt GridButtonColumn w celu dodania do siatki:
protected override void CreateChildControls()
{
GridButtonColumn c = new GridButtonColumn();
c.ConfirmText = "Really Delete?";
c.ConfirmDialogType = GridConfirmDialogType.RadWindow;
c.ConfirmTitle = "Delete";
c.ButtonType = GridButtonColumnType.LinkButton;
c.Text = "Delete";
c.UniqueName = "DeleteColumn";
grid.Columns.Add(c);
// ...
grid.DeleteCommand += new GridCommandEventHandler(Grid_DeleteCommand);
}
Siatka renderuje się poprawnie - zapełniona danymi i przy obecnym przycisku usuwania.
Teraz, kiedy kliknę dowolny przycisk usuwania, przycisk Grid_DeleteCommand()
zdarzenie nie zostanie uruchomione. Jednak po dodaniu losowego przycisku poza siatką uruchamiane jest zdarzenie kliknięcia:
Button b = new Button();
b.Text = "Hello World";
b.Click += new EventHandler(Button_Click);
Nie mogę debugować tej instalacjiSharepoint (a może mogę, ale dołączenie do procesu jeszcze nie pozwoliło mi tego zrobić), więc metodą obu tych zdarzeń jest po prostu przekierowanie do Google. W ten sposób sprawdzam, czy zdarzenia się uruchamiają:
string AbsoluteUri ="http://www.google.com";
Page.Response.Redirect(AbsoluteUri);
Jedyną różnicą, którą widzę między nimi, jest to, że przycisk „Usuń” jest zagnieżdżony w kontrolce siatki, natomiast przycisk „Witaj świecie” nie powoduje zagnieżdżenia.
Jak mógłbym mieć Grid_DeleteCommand
strzelać po kliknięciu przycisku na siatce?
Odpowiedzi:
1 dla odpowiedzi № 1Korzystając z kontrolki Telerik Grid, powinieneś określić przyciski CommandName
w twoim kodzie.
Dodanie tego wiersza powinno rozwiązać problem:
c.CommandName = "Delete";