Question

I have created a Sharepoint WebPart, and I have given it a custom ToolPart that includes a Grid (a Telerik RadGrid, to be exact, though that is rather irrelevant). I have populated the grid, and created a GridButtonColumn object to add to the grid:

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);
}

The grid renders correctly - populated with data and with the delete button present.

Now, when I click any of the delete button, the Grid_DeleteCommand() event does not get triggered. However, when I add a random button outside of the grid, it's click event gets triggered:

Button b = new Button();
    b.Text = "Hello World";
    b.Click += new EventHandler(Button_Click);

I'm not able to debug on this installation of Sharepoint (or maybe I can, but attaching to the process hasn't allowed me to do so yet), so the method of both of those events is simply a redirection to Google. That is how I check to see if the events fire:

    string AbsoluteUri ="http://www.google.com";
    Page.Response.Redirect(AbsoluteUri);

The only difference I can see between the two is that, with the 'Delete' button, it is nested inside of a Grid control, whereas with the 'Hello World' button, there is no nesting.

How would I be able to have the Grid_DeleteCommand fire when I click the button in the grid?

Était-ce utile?

La solution

Using the Telerik Grid control, you should specify button's CommandName in your code.

Adding this line should solve the problem:

c.CommandName = "Delete";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top