Hi allI have a WebDataGrid, I fill it in .aspx.ch like ".DataSource = SomeDataTable".The last column is empty and I like to have a button there on each row.OnClick I need to read some informations about the current row.I guess this should be done with TemplateDataField.How can I do this in the code behind after setting the DataSource ?Thanks and best regardsFrank Uray
Hello Frank,
Please let me know if you have any further questions regarding this issue. Did you manage to resolve it?
Hello Frank,Did you have the chance to test my suggestion? When you have auto generated columns they are not available through grid.Columns - this collection is containing only the columns added through the mark up or added through the server side code. You are adding only the template column. The other 3 are auto generated. In initializeRow event you are available to manipulate the columns by getting them through the row items as shown. The first items are the added columns and they will be at the beginning of the collection. At the end of the collection are the 3 autogenerated columns. You can set the last column (3 )to be with visibility false and to set the first column which is your template column to be with last visible index like
e.Row.Items[3].Column.Hidden = true;
e.Row.Items[0].Column.VisibleIndex = 3;
The null exception was because you are looking for the button in the autogenerated column not in the template one.
Please let me know if this answer makes any sense.
Hi NikiforThanks for your answer.Well, I really dont unterstand this concept ???When I set VisibleIndex I get one column called Button without a buttonand another column also called Button with the button.All I need to do is:I am getting a datatable from the sql server.I set DataSource and DataBind of the grid.The last column of the datatable is always empty and thereI need to have a button.On button click, in the event (code behind)I need to identify the current row to get some values out of it.RegardsFrank Uray
Hello Frank,You are getting this exception because the btn is null. IT is null because the last column is not containing it. If what you are trying to achieve is to set the column with the button to be last shown you can set the visible index of the column like this:private void WebDataGrid_Test_InitializeRow(object sender, Infragistics.Web.UI.GridControls.RowEventArgs e)
{
e.Row.Items[0].Column.Hidden = false;
e.Row.Items[1].Column.Hidden = false;
// e.Row.Items[2].TemplateId = "ActionButtons";
e.Row.Items[2].Column.Width = 100;
e.Row.Items[3].Column.Hidden = false;
Button btn = (Button)e.Row.Items[0].FindControl("_Button_Cancel_ID");
btn.CommandArgument = e.Row.Index.ToString();
btn.CommandName = "Cancel";
}
Hi NikiforTry to put the button to the last column: e.Row.Items[3].Column.Hidden = false; Button btn = (Button)e.Row.Items[3].FindControl("_Button_Cancel_ID");
There will be an exception raised: "Object reference not set to an instance of an object."on the line:btn.CommandArgument = e.Row.Index.ToString();
Thanks and best regardsFrank Uray