c # img применение атрибута onclick к RowDatabound - PullRequest
1 голос
/ 14 мая 2019

В моем gridview в c # можно редактировать одну строку.

    <asp:TemplateField ItemStyle-HorizontalAlign="Center">
        <ItemTemplate>
            <asp:ImageButton 
                ID="imgbtnEdit" 
                CommandName="Edit" 
                runat="server"
                ImageUrl='<%# Eval("Stopped").ToString().Equals("1") ? 
                "/aspnet/img/edit_1.gif" : 
                "/aspnet/img/edit_2.gif" %>'
                OnClientClick="if (!confirm('Confirm ?')) return false;" />
        </ItemTemplate>
    </asp:TemplateField>

protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
    string sID = gv.DataKeys[e.NewEditIndex].Value.ToString();
    string queryString = "Default2.aspx?sID=" + sID.ToString();
    string newWin = "var Mleft = (screen.width/2)-(1200/2);
                     var Mtop = (screen.height/2)-(700/2);
                     window.open('" + queryString + "','_blank',
                    'height=600,width=600,
                     status=yes,toolbar=no,scrollbars=yes,menubar=no,
                     location=no,top=\'+Mtop+\', 
                     left=\'+Mleft+\';');";
    ClientScript.RegisterStartupScript(this.GetType(), "pop", newWin, true);
}

В событие связывания строк Я добавил это условие, когда значение ячейки номер два равно нулю:

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {                       
        ImageButton img = (ImageButton)e.Row.FindControl("imgbtnEdit");

        if (e.Row.Cells[2].Text.Equals("0"))
        {
            img.ImageUrl = "/aspnet/img/stop.gif";
            img.Width = 18;
            img.Height = 18;
            img.Enabled = true;

            e.Row.Cells[1].Attributes.Add("onClick", "alert('Cell 1 Clicked');");
        }
    }
}

Но при нажатии на изображение stop.gif сначала открывается предупреждение с сообщением Confirm?, а затем предупреждение с сообщением Cell 1 Clicked и открывается в всплывающем окне на странице asp Default2.aspx для редактирования строки .

В этом случае мне нужно:

  1. Открыть только оповещение Cell 1 Clicked;
  2. Открыть новую страницу aspx Default3.aspx .

Как это решить?

Заранее благодарю за любую помощь.

1 Ответ

1 голос
/ 15 мая 2019

Надеюсь, я вам помог.

protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{    
    int xCount = Int32.Parse(gv.Rows[e.NewEditIndex].Cells[2].Text);

    if (xCount > 0)
    {        
       string sID = gv.DataKeys[e.NewEditIndex].Value.ToString();
       string queryString = "Default2.aspx?sID=" + sID.ToString();
       string newWin = "var Mleft = (screen.width/2)-(1200/2);
                        var Mtop = (screen.height/2)-(700/2);
                        window.open('" + queryString + "','_blank',
                       'height=600,width=600,
                        status=yes,toolbar=no,scrollbars=yes,menubar=no,
                        location=no,top=\'+Mtop+\', 
                        left=\'+Mleft+\';');";
       ClientScript.RegisterStartupScript(this.GetType(), "pop", newWin, true);    
    }
}

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {                       
        ImageButton img = (ImageButton)e.Row.FindControl("imgbtnEdit");

        if (e.Row.Cells[2].Text.Equals("0"))
        {
            img.ImageUrl = "/aspnet/img/stop.gif";
            img.Width = 18;
            img.Height = 18;
            img.Enabled = true;

            img.OnClientClick = "";
            img.Attributes["onclick"] = "if(!confirm('...')){return false;};";//open Default3.aspx
        }
    }
}
...