您好我有一个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>
我不确定这是否是正确的做法。
感谢大家的期待。
答案 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>