如何在该行中的文本框获得焦点时获取gridview的行索引

时间:2017-06-18 13:57:05

标签: c# asp.net gridview

您好我有一个gridview,其中我已动态添加了文本框,如下面的代码所示:

protected void getDateControls()
{
    foreach (GridViewRow grow in gdView.Rows)
    {
        for (int i = 7; i <= gdView.HeaderRow.Cells.Count - 1; i++)
        {
            string txtName = gdView.HeaderRow.Cells[i].Text;
            System.Web.UI.WebControls.TextBox txt = new System.Web.UI.WebControls.TextBox();
            txt.ID = txtName;
            txt.Width = 25;
            txt.Font.Size = 9;
            txt.Style.Add("text-align", "Center");
            txt.BackColor = Color.Black;
            txt.ForeColor = Color.White;
            txt.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
            txt.AutoPostBack = true;
            txt.TextChanged += new System.EventHandler(this.txtName_Changed);
            grow.Cells[i].Controls.Add(txt);
        }
    }
}

现在,我必须在任何这些文本框获得焦点时获取行索引。任何人都可以帮我完成以下代码。我想在文本框(TextBox1)中获取行索引,该文本框在设计时添加到页面中。

<script type="text/javascript">
    $(document).ready(function() {
        $(document).on("focus", "input[id*='txtName']", function() {
            ////help required to get the row index....
        });
    });
</script>

我不确定这是否是正确的做法。

感谢大家的期待。

1 个答案:

答案 0 :(得分:0)

您可以通过向TextBox添加属性并将其添加到javascript函数中来完成此操作。因此,首先更改foreach以添加行号。

int rowNumber = 0;

foreach (GridViewRow grow in GridView1.Rows)
{
    for (int i = 7; i <= GridView1.HeaderRow.Cells.Count - 1; i++)
    {
        //rest of code

        txt.Attributes.Add("rowNumber", rowNumber.ToString());     
    }

    rowNumber++;
}

然后是javascript函数。您可能需要根据您的具体规格进行调整。

<script type="text/javascript">
    $(document).ready(function () {
        $('#<%= GridView1.ClientID %> input[type="text"]').focus(function () {
            var rowNumber = $(this).attr("rowNumber");
            alert(rowNumber);
        });
    });
</script>