Domanda

Ho un datagrid e non v'è una casella di controllo che è modello in ogni riga. Supponiamo che io sono nel CheckedChanged caso di una delle caselle di controllo. C'è un modo posso dire in cui riga del DataGrid che casella di controllo è in?

È stato utile?

Soluzione 3

Ok ho trovato una soluzione pulita :) In caso CheckedChanged ho appena scritto il seguente:

((GridViewRow)((Control)sender).Parent.Parent).DataItemIndex;

Altri suggerimenti

è possibile attraverso la proprietà Parent, anche se bisogna fare qualcosa di simile chk.Parent.Parent e così via. Non so quanti riferimenti genitori fino alla riga corrente è ...

HTH.

provare qualcosa di simile:

<script language="javascript" type="text/javascript">


        function rowno(rowindex) {
            var gridViewCtlId = document.getElementById("<%=GridView2.ClientID %>").rows[rowindex].cells[1].innerText;
            alert('you clicked on ' + gridViewCtlId);
        }

    </script>

<asp:GridView ID="GridView2" runat="server" OnRowDataBound="GridView1_RowDataBound1" PageSize="5">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <%--<asp:Button ID="Button1" runat="server" Text="Button" />--%>
                    <asp:CheckBox ID="CheckBox1" runat="server"  />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

in .cs

protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                CheckBox delete = (CheckBox)e.Row.Cells[0].Controls[1];
                delete.Attributes.Add("onclick", "javascript:rowno(" + count + ")");
                count++;
            }
        }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top