Freitag, April 10, 2020

Hinzufügen klicken Sie auf, um imagebutton innerhalb gridview dynamisch

Habe ich versucht zum auslösen des Ereignisses klicken Sie auf für ein ImageButton-Steuerelement aus der Fußzeile eines gridview, aber ich es hat nicht Feuer,
Ich werde für jede Hilfe dankbar,
vielen Dank im Voraus,
hier ist der code

protected void grvBubDetails_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Footer)
    {
         ImageButton imgbtnSendMail = new ImageButton();
         //ImageButton imgEdit = new ImageButton();
         imgbtnSendMail.ImageUrl = "~/Images/mail01.png";
         imgbtnSendMail.AlternateText = "Edit";
         imgbtnSendMail.ToolTip = "for send mail press here";
         imgbtnSendMail.Width = imgbtnSendMail.Height = 20;
         //imgbtnSendMail.CommandName = "sendMail";
         //imgbtnSendMail.CommandArgument = "somevalue";
         imgbtnSendMail.Click += new ImageClickEventHandler(imgbtnSendMail_Click);
         //imgbtnSendMail.Attributes["runat"] = "server";
         //imgbtnSendMail.Attributes["onclick"] = "imgbtnSendMail_Click";
         e.Row.Cells[6].Controls.Add(imgbtnSendMail);
    }
}
protected void imgbtnSendMail_Click(object sender, ImageClickEventArgs e)
{
        string Text = "Image clicked";
}

2 Kommentare

  1. 2

    update grvBubDetails_RowDataBound Veranstaltung wie dieser;

    ImageButton imgbtnSendMail = new ImageButton();
    imgbtnSendMail.CommadName = "cmdSendMail"; //add this line
    imgbtnSendMail.CommadArgument = "also you can pass a parameter from here";

    Hinzufügen RowCommand Veranstaltung zur grid-Ansicht. Tun Sie dies in RowCommand event-handler-Funktion;

    if(e.CommandName.equals("cmdSendMail")){
        string Text = "Image clicked";
        string argument = e.CommandArgument;
    }

    Update:

    Grid-Ansicht RowCommand Ereignisses, das ausgelöst wird, nachdem PageLoad-Ereignis. Ihr button entfernt, nach jedem Neuladen der Seite, und nicht neu erstellt, weil rowDatabound-Ereignis nicht ausgelöst.

    arbeiten code:

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                List<string> list = new List<string>()
                {
                    "item 1",
                    "item 2",
                    "item 3"
                };
                GridView1.DataSource = list;
                GridView1.DataBind();
            }
    
            //make sure outside of !IsPostback
            //recreate button every page load
            Button btn = new Button();
            btn.CommandName = "cmdSendMail";
            btn.CommandArgument = "sample arg";
            btn.Text = "send mail";
            GridView1.FooterRow.Cells[0].Controls.Add(btn);
        }
    
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            Response.Write(e.CommandName + new Random().Next().ToString());
        }
    }
    • Ich habe auch dies versucht, aber es geht nicht, innen grvBubDetails_RowCommand !!! Ist, weil es ist ein footer??
    • Ich habe ähnlichen code, bevor Sie mit einer Taste, aber mit ImageButton ich weiß nicht, warum es nicht funktioniert
    • Ist EnableViewState gilt für Seite-und der grid view-Steuerelement? Wenn Sie databindig code im load-Ereignis, stellen Sie sicher, es ist in if(!IsPostBack) block.
    • ja, es ist wahr, und ich gebunden für die grid-innen, wenn(!IsPostBack) block
    • Versuchen Sie, die gleiche Taste innerhalb Datarow. ich bin derzeit auf einem mac-computer, und ich kann nicht laufen .net-code …
    • Ich weiß, dass ich verärgert Sie, aber ich wirklich zu schätzen, dass du helfen, werde ich mein bestes versuchen, und wenn Sie keine Lösung gefunden, ich Schätze es, dass
    • Danke sehr viel, ich habe gerade gesehen deine Antwort, und versucht es, es funktioniert, sorry für die Verspätung, ich nahm eine Beurlaubung für zwei Tage 🙂

  2. 0

    Müssen Sie deklarieren die ImageButton auf den globalen Gültigkeitsbereich (class-Ebene)

    ImageButton imgbtnSendMail = new ImageButton();
    protected void grvBubDetails_RowDataBound(object sender, GridViewRowEventArgs e)
    {
         if (e.Row.RowType == DataControlRowType.Footer)
         {
    • vielen Dank für ur Antwort, habe ich versucht, dieses funktioniert aber nicht

Kostenlose Online-Tests