Write mail (Mailto) from the client on the server. Eval does not work

0

I'm trying to place a button on Grid . All correct if I put an email by default. The question is that I want to place each of the rows that corresponds to it (there is already a column with that email).

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 at the moment I try to place an Eval, as I already have in other web applications, it knocks me down. Be in the mailto, in a console log, alert ...

window.location.href('mailto:<%#Eval("Email")%>');

What 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 entirely 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 I already call the load grid in the page load

    
asked by GDP 30.06.2017 в 08:38
source

3 answers

0

I have managed to put something more appropriate for the situation. I placed this in one of the columns. Now the problem I have is that it acts as one more of the row, and when I clicked it, apart from the mail, it also opens the profile modal xD

<dx:GridViewDataTextColumn VisibleIndex="99">
    <DataItemTemplate>
        <a href="mailto:<%#Eval("Email")%>"><img src="http://XXXX/Style%20Library/Images/send.png" /></a>
    </DataItemTemplate>
</dx:GridViewDataTextColumn>
    
answered by 04.07.2017 / 11:37
source
1

Good, you could try the following:

window.location.href = "mailto:"+<%#Eval("Email")%>;

EDIT: As I said in the comment, I think the problem will be in the quotes, which break the sentences. In this link they have a similar problem and the escaped characters solve it: OnClick Eval () escaping characters .

I hope to be of help, greetings.

    
answered by 30.06.2017 в 12:05
0

I have placed this ñapa quite guarrilla, but it works for me:

Clicking 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.

function AbrirMailToe(e) {
    var email = $('.dxgvFocusedRow').find('.dxgv').eq(4).html();
    window.location = 'mailto:' + email;
}
    
answered by 03.07.2017 в 10:55