I am trying to place a button in the Grid
. Everything is correct if I put a default email. The point is that I want to place the one that corresponds to each of the rows (there is already a column with that mail).
In this case if it works:
<dx:ASPxGridView ID="ContactosGridView"
DataSourceID="sqlContactos"
ClientInstanceName="ContactosGridView"
EnableRowsCache="False"
runat="server"
KeyFieldName="IdContacto"
OnHtmlDataCellPrepared="GridView_HtmlDataCellPrepared">
<ClientSideEvents RowClick="function(s, e) { SMCVisitasClientesDetalleVisita_OpenDialogSeeContact(e); }"
CustomButtonClick="function(s, e) {
if(e.buttonID == 'SendEmail'){
window.location.href('mailto:[email protected]');
}
}" />
<Settings ShowGroupPanel="true" ShowFilterRow="true" />
<SettingsPager PageSize="20"></SettingsPager>
<SettingsBehavior ConfirmDelete="true" />
<Styles>
<AlternatingRow Enabled="true" />
</Styles>
<Columns>
</Columns>
</dx:ASPxGridView>
But the moment I try to place an Eval, as I already have in other web applications, it crashes. Be it in the mailto, in a console log, alert...
window.location.href('mailto:<%#Eval("Email")%>');
That could be happening? Any idea how to fix it? I'm going crazy and it's what I have left to finish the project almost.
PS: the columns of the grid and the button are printed in their entirety from the server side.
Button:
private void AddCommandColumn()
{
GridViewCommandColumn commandColumn = new GridViewCommandColumn();
commandColumn.Name = DevExpressInfraestructure.V11.Core.Definitions.Grid.CommandColumnName;
commandColumn.ButtonType = ButtonType.Image;
commandColumn.ClearFilterButton.Visible = true;
commandColumn.ClearFilterButton.Image.Url = DevExpressInfraestructure.V11.Core.Definitions.Images.Cancel;
commandColumn.ClearFilterButton.Image.ToolTip = DevExpressTexts.Keys.ClearFilter.GetLiteral();
commandColumn.VisibleIndex = DevExpressInfraestructure.V11.Core.Definitions.Grid.CommandColumnIndex;
commandColumn.HeaderStyle.CssClass = "SMCGridCommandColumn";
this.ContactosGridView.Columns.Add(commandColumn);
this.SendEmailButton(commandColumn, ButtonsId.SendEmail, Resources.Keys.SendEmail.Get());
}
private void SendEmailButton(GridViewCommandColumn column, string id, string text)
{
GridViewCommandColumnCustomButton suscriberButton = new GridViewCommandColumnCustomButton();
//suscriberButton.Image.Url = DevExpressInfraestructure.V11.Core.Definitions.Images.SendEmail;
suscriberButton.Image.Url = "http://XXXX/Style%20Library/Images/send.png";
suscriberButton.ID = id;
suscriberButton.Text = text;
column.CustomButtons.Add(suscriberButton);
}
private void LoadGrid()
{
// Set grid view colums
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.NombreContacto, Resources.Keys.ContactoPrincipalFrm.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.CodigoCliente, Resources.Keys.CodigoCliente.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.NombreCliente, Resources.Keys.NombreCliente.Get().TrimEnd(':'), AutoFilterCondition.Contains));
if (this.ExportExcelMode)
{
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Direccion, Resources.Keys.Direccion.Get().TrimEnd(':'), AutoFilterCondition.Contains));
}
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.CodigoPostalPoblacion, Resources.Keys.CodigoPostalPoblacion.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Email, Resources.Keys.EMailFrm.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Movil, Resources.Keys.MovilFrm.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Telefono, Resources.Keys.TelefonoFrm.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Departamento, Resources.Keys.DepartamentoFrm.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Cargo, Resources.Keys.CargoFrm.Get().TrimEnd(':'), AutoFilterCondition.Contains));
if (this.ExportExcelMode)
{
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Descripcion, Resources.Keys.DescripcionFrm.Get().TrimEnd(':'), AutoFilterCondition.Contains));
}
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Relevancia, Resources.Keys.Relevancia.Get().TrimEnd(':'), AutoFilterCondition.Contains));
if (this.ExportExcelMode)
{
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Observaciones, Resources.Keys.ObservacionesFrm.Get().TrimEnd(':'), AutoFilterCondition.Contains));
}
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Acciones, Resources.Keys.AccionesMarketingFrm.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Holon, Resources.Keys.Holon.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Proyecto, Resources.Keys.proyecto.Get().TrimEnd(':'), AutoFilterCondition.Contains));
if (this.ExportExcelMode)
{
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Segmento, Resources.Keys.Segmento.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Subsegmento, Resources.Keys.SegmentoActividad.Get().TrimEnd(':'), AutoFilterCondition.Contains));
this.ContactosGridView.AddGridViewDataColumn(new GridField(Contacto.Columns.Responsable, Resources.Keys.AtResponsable.Get().TrimEnd(':'), AutoFilterCondition.Contains));
}
this.AddCommandColumn();
this.ContactosGridView.SetGrid(false, false, false);
}
And now I call the load grid in the page load
Hi, you could try the following:
EDIT: As I said in the comment, I think the problem is going to be in the quotes, which break the sentences. In this link they have a similar problem and they solve it with character escaping: OnClick Eval() escaping characters .
I hope to be of help, greetings.
I have placed this rather slutty ñapa on it, but it works for me:
On click the row class changes to focused. So I look for that class, then I look for the 4 td inside, and I get the html.
I managed to put something more appropriate for the situation. I have placed this in one of the columns. Now the problem I have is that it acts as one more in the row, and when I click it, apart from the mail, it also opens the profile modal xD