数据网格中哪个行索引有模板复选框?

发布于 2024-09-24 04:11:56 字数 91 浏览 9 评论 0原文

我有一个数据网格,每行都有一个作为模板的复选框。 假设我处于其中一个复选框的 CheckedChanged 事件中。有什么方法可以告诉我该复选框位于数据网格的哪一行?

I have a datagrid and there is a checkbox which is template in each row.
Suppose I am in CheckedChanged event of one of the checkboxes. Is there any way I can tell in which row of the datagrid that check box is in?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浅笑轻吟梦一曲 2024-10-01 04:11:56

您可以通过 Parent 属性,尽管您必须执行 chk.Parent.Parent 等操作。我不知道当前行有多少父引用......

HTH。

You can through the Parent property, though you have to do something like chk.Parent.Parent and so on. I don't know how many parent references up the current row is...

HTH.

青萝楚歌 2024-10-01 04:11:56

尝试这样的事情:

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

在.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++;
            }
        }

try something like this:

<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++;
            }
        }
怪我鬧 2024-10-01 04:11:56

好吧,我找到了一个巧妙的解决方案:) 在checkedChanged 事件中我刚刚写了以下内容:

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

Ok I found a neat solution :) In the checkedChanged event I just wrote the following:

((GridViewRow)((Control)sender).Parent.Parent).DataItemIndex;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文