cómo saber la CONSEJO DE HERRAMIENTA del botón pulsado dentro de la lista de datos

Necesito un ejemplo de código por favor. Intenté selectedindexchange pero no registra ningún cambio de índice, ¿qué usar?

su servidor sql c # vs08 asp.net

los archivos de código son

archivo .cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {





    }
    protected void Button1_Click(object sender, EventArgs e)
    {//not this
        ///Label3.Text = "clicked clicked clicked";


    }
    protected void Button1_Click1(object sender, EventArgs e)
    {

        Label5.Text = "the tool tip of the button clicked is! HELP!!!";


        //here code please how to which button is clicked?
        //there are many records so?
        //even if i try to use the button id directly
        //it does not appear
        //to vs the button does not exist outside the datalist control
        //help

    }
}

el archivo fuente

    <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
        ConnectionString="<%$ ConnectionStrings:test1 %>" 
        DeleteCommand="DELETE FROM [1] WHERE [ID] = @ID" 
        InsertCommand="INSERT INTO [1] ([ID], [NAME]) VALUES (@ID, @NAME)" 
        SelectCommand="SELECT * FROM [1]" 
        UpdateCommand="UPDATE [1] SET [NAME] = @NAME WHERE [ID] = @ID">
        <DeleteParameters>
            <asp:Parameter Name="ID" Type="Decimal" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Name="NAME" Type="String" />
            <asp:Parameter Name="ID" Type="Decimal" />
        </UpdateParameters>
        <InsertParameters>
            <asp:Parameter Name="ID" Type="Decimal" />
            <asp:Parameter Name="NAME" Type="String" />
        </InsertParameters>
    </asp:SqlDataSource>
<br />
    <asp:Label ID="Label5" runat="server" Text="Label"></asp:Label>
    <br />
    <asp:DataList ID="DataList2" runat="server" DataKeyField="ID" 
        DataSourceID="SqlDataSource3">
        <ItemTemplate>
            ID:
            <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>' />
            <br />
            NAME:
            <asp:Label ID="NAMELabel" runat="server" Text='<%# Eval("NAME") %>' />
            <br />
            <br />
            <asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
            -<asp:Label ID="Label2" runat="server" Text='<%# Eval("NAME") %>'></asp:Label>
            &nbsp;
            <br />
            <br />
            <br />
            &nbsp;<asp:Label ID="Label4" runat="server" Text='<%# Eval("ID") %>' 
                ToolTip='<%# Eval("NAME") %>'></asp:Label>
            <br />
            here extra information/ description is binded to tool tip.<br />
            <br />
            <br />
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click1" 
                Text='<%# Eval("ID") %>' ToolTip='<%# Eval("NAME") %>' />
            <br />
            when clicked, the text of the button is displayed in the label. but many records 
            so button belonging to which record clicked?<br />
            <br />
            <br />
            <hr />
            <br />
            <br />
        </ItemTemplate>
    </asp:DataList>
    <br />

 






EDITAR

<asp:DataList ID="DataList2" runat="server" DataKeyField="ID" 
        DataSourceID="SqlDataSource3">
        <ItemTemplate>
            ID:
            <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>' />
            <br />
            NAME:
            <asp:Label ID="NAMELabel" runat="server" Text='<%# Eval("NAME") %>' />
            <br />
            <br />
            <asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
            -<asp:Label ID="Label2" runat="server" Text='<%# Eval("NAME") %>'></asp:Label>
            &nbsp;
            <br />
            <br />
            <br />
            &nbsp;<asp:Label ID="Label4" runat="server" Text='<%# Eval("ID") %>' 
                ToolTip='<%# Eval("NAME") %>'></asp:Label>
            <br />
            here extra information/ description is binded to tool tip.<br />
            <br />
            <br />
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click1" 
                Text='<%# Eval("ID") %>' ToolTip='<%# Eval("NAME") %>' />
            <br />
            when clicked, the text of the button is displayed in the label. <br />
            <br />
            <br />
            <asp:Button ID="Button2" runat="server" CommandArgument='<%# Eval("NAME") %>' 
                CommandName="Explain" Text='<%# Eval("ID") %>' />
            <asp:TextBox ID="TextBox1" runat="server">First Record</asp:TextBox>
            <br />
            when clicked takes argument from button and the text in the text box, displayed. 
            (record 1)<br />
            <br />
            <br />
            <br />
            <asp:Button ID="Button3" runat="server" CommandArgument='<%# Eval("NAME") %>' 
                CommandName="Explain" Text='<%# Eval("ID") %>' />
            //<br />
            when clicked does the same as above
            <br />
            <hr />
            <br />
            <br />
        </ItemTemplate>
    </asp:DataList>

código detrás

protected void DataList2_ItemCommand (remitente del objeto, DataListCommandEventArgs e) {// todos los botones dentro de la fila que tienen la propiedad CommandName establecida pueden hacer que se ejecute este controlador de eventos. // Use el argumento CommandName para determinar en qué botón se hizo clic y realice el cambio de acción apropiado (e.CommandName) {

        case "Explain":
            // update your label using the command argument rather that the button's ToolTip
            Label5.Text = e.CommandArgument.ToString();

            TextBox TextBox1 = e.Item.FindControl("TextBox1") as TextBox;

            Label6.Text = TextBox1.Text;

            break;



        default:
            Label5.Text="ERROR";
            break;
    }
}

error: - olvidé poner OnItemCommand = "MyDataList_ItemCommand" en el código fuente de la lista de datos ...

preguntado el 16 de julio de 10 a las 18:07

2 Respuestas

Podrías hacer esto:

protected void Button1_Click1(object sender, EventArgs e)
{
    Label5.Text = (sender as Button).ToolTip;
}

Además, si sabe que desea trabajar con otros controles dentro de esa fila, puede usar el evento DataList.ItemCommand en lugar del evento Button.Click. A continuación se muestra un ejemplo de cómo podría hacerlo:

Marcado ASP:

        <asp:Label ID="MyLabel" runat="server" />
        <asp:DataList ID="MyDataList" runat="server" OnItemCommand="MyDataList_ItemCommand">
            <ItemTemplate>
                <!-- Suppose you had some input controls that you needed to work with as well -->
                <asp:TextBox ID="txtInput1" runat="server" />
                <asp:TextBox ID="txtInput2" runat="server" />
                <asp:Button ID="btnMyCommand" runat="server" CommandName="MyCommand" CommandArgument='<%# Eval("NAME") %>' Text='<%# "Execute My Command on ID:" + Eval("ID") %>' ToolTip='<%# string.Format("This will execute the \"My Command\" command on {0}.", Eval("NAME")) %>' />
                <!-- just some examples of other buttons on the same row that execute different commands -->
                <asp:Button ID="btnDoSomethingCrazy" runat="server" CommandName="Do Something Crazy!" Text="Do Something Crazy!" />
                <asp:LinkButton ID="btnEdit" runat="server" CommandName="Edit" Text="Edit" />
            </ItemTemplate>
        </asp:DataList>

Código detrás:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack && !Page.IsCallback)
        {
            // some example data
            MyDataList.DataSource = new[] {
                new { ID = 1, NAME = "ABCD" },
                new { ID = 2, NAME = "BCDE" },
                new { ID = 3, NAME = "CDEF" },
            };
            MyDataList.DataBind();
        }
    }

    protected void MyDataList_ItemCommand(object sender, DataListCommandEventArgs e)
    {
        // all of the buttons within the row can cause this event handler to execute.
        // Use the CommandName argument (populated by the CommandName property of the button that was clicked) in order to determine which button was clicked and take the appropriate action
        switch (e.CommandName)
        {
            case "Edit":
                // ...
                break;
            case "Update":
                // ...
                break;
            case "Cancel":
                // ...
                break;
            case "Delete":
                // ...
                break;
            case "MyCommand":
                // update your label using the command argument rather that the button's ToolTip
                MyLabel.Text = e.CommandArgument.ToString();

                TextBox txtInput1 = e.Item.FindControl("txtInput1") as TextBox;
                TextBox txtInput2 = e.Item.FindControl("txtInput2") as TextBox;

                string value1 = txtInput1.Text;
                string value2 = txtInput2.Text;

                // do something with the input values
                break;
            case "Do Something Crazy!":
                // ...
                break;
        }
    }

Respondido 19 Jul 10, 14:07

para otras abejas nuevas, también se puede hacer lo siguiente configurando la propiedad itemcommand del datalist desde la vista de diseño al método creado con el nombre datalist1_blahblah .... NOTA: -el método aparecerá en la lista desplegable si está en el. archivo cs - user287745

puede haber un error en "// todos los botones dentro de la fila que tienen la propiedad CommandName establecida pueden hacer que este controlador de eventos se ejecute". incluso aquellos que no tienen este conjunto, como en el código de pregunta editado anteriormente el "botón1 clic "¡hace que se ejecuten el evento click y el evento itemcommand de datalist! .. ¿por qué? - user287745

Hrm, tienes razón. La documentación del evento DataList.ItemCommand (msdn.microsoft.com/en-us/library/…) simplemente dice que "ocurre cuando se hace clic en cualquier botón en el control DataList" y que "se usa comúnmente cuando se tiene un control de botón con un valor CommandName personalizado". Actualizaré los comentarios en mi ejemplo para ser más precisos. En cuanto a por qué ... los diseñadores de control probablemente no vieron una razón para restringir el evento a botones con CommandName configurado. Si CommandName es nulo, puede optar por ignorarlo. - Aprendiz del Dr. Wily

Puedes intentar transmitir el remitente:

protected void Button1_Click1(object sender, EventArgs e)
{
    Button myButton = (Button)sender;
    Label5.Text = myButton.ToolTip;
}

Respondido 16 Jul 10, 22:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.