ASP.NET(C#)里GridView模板列的焦点问题
我在ASP.NET里用了GridView控件,页面代码如下:<asp:GridViewID="gv_StockInfo"runat="server"AllowPaging...
我在ASP.NET里用了GridView控件,页面代码如下:
<asp:GridView ID="gv_StockInfo" runat="server" AllowPaging="True">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="商品编码" HeaderText="商品编码" />
<asp:BoundField DataField="商品名称" HeaderText="商品名称" />
<asp:TemplateField HeaderText="实到数量">
<ItemTemplate>
<asp:TextBox ID="txt_quantity" runat="server" AutoPostBack="True" CausesValidation="True" Width="50px" Text='<%# Eval("实到数量") %>' OnTextChanged="txt_quantity_TextChanged"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我想做的是当模板列中的TextBox获取焦点的时候,GridView就选中我所点中的TextBox那一行?我要怎么实现呢?希望有具体的代码```希望高手支招``` 展开
<asp:GridView ID="gv_StockInfo" runat="server" AllowPaging="True">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="商品编码" HeaderText="商品编码" />
<asp:BoundField DataField="商品名称" HeaderText="商品名称" />
<asp:TemplateField HeaderText="实到数量">
<ItemTemplate>
<asp:TextBox ID="txt_quantity" runat="server" AutoPostBack="True" CausesValidation="True" Width="50px" Text='<%# Eval("实到数量") %>' OnTextChanged="txt_quantity_TextChanged"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我想做的是当模板列中的TextBox获取焦点的时候,GridView就选中我所点中的TextBox那一行?我要怎么实现呢?希望有具体的代码```希望高手支招``` 展开
4个回答
展开全部
前台:
步骤1:添加JavaScript脚本,用以在TextBox控件获得焦点时,触发后台GridView的RowCommand事件。
代码如下:
<script language="javascript" type="text/javascript">
function test(x)
{
var btn = x + "Button";
document.all(btn).click();
}
</script>
步骤2:修改你的GridView。
注意:
1.TextBox添加了onfocus="test(this.id)"
2.添加了一个隐藏的按钮
详细见下代码:
<asp:GridView ID="gv_StockInfo" runat="server" AllowPaging="True">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="商品编码" HeaderText="商品编码" />
<asp:BoundField DataField="商品名称" HeaderText="商品名称" />
<asp:TemplateField HeaderText="实到数量">
<ItemTemplate>
<asp:TextBox ID="txt_quantity" runat="server" AutoPostBack="True" CausesValidation="True" Width="50px" Text='<%# Eval("实到数量") %>' onfocus="test(this.id)"></asp:TextBox>
<!--添加一个隐藏的按钮,CommandArgument存储当前GridView控件的行号-->
<asp:Button ID="txt_quantityButton" runat="server" Text="" CommandArgument= '<%#(Container as GridViewRow).RowIndex %>' Width="0" Height="0" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
后台:
步骤3:
添加GridView的RowCommand事件
protected void gv_StockInfo_RowCommand(object sender, GridViewCommandEventArgs e)
{
int id = Convert.ToInt32(e.CommandArgument);
gv_StockInfo.SelectedIndex = id;
//在这里添加你的GridView的数据绑定过程或函数。
}
与2楼的回答不同之处在于,此方法是通过调用GridView的事件,使GridView真正的选取该行,而不是改变该行的现实效果。
步骤1:添加JavaScript脚本,用以在TextBox控件获得焦点时,触发后台GridView的RowCommand事件。
代码如下:
<script language="javascript" type="text/javascript">
function test(x)
{
var btn = x + "Button";
document.all(btn).click();
}
</script>
步骤2:修改你的GridView。
注意:
1.TextBox添加了onfocus="test(this.id)"
2.添加了一个隐藏的按钮
详细见下代码:
<asp:GridView ID="gv_StockInfo" runat="server" AllowPaging="True">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="商品编码" HeaderText="商品编码" />
<asp:BoundField DataField="商品名称" HeaderText="商品名称" />
<asp:TemplateField HeaderText="实到数量">
<ItemTemplate>
<asp:TextBox ID="txt_quantity" runat="server" AutoPostBack="True" CausesValidation="True" Width="50px" Text='<%# Eval("实到数量") %>' onfocus="test(this.id)"></asp:TextBox>
<!--添加一个隐藏的按钮,CommandArgument存储当前GridView控件的行号-->
<asp:Button ID="txt_quantityButton" runat="server" Text="" CommandArgument= '<%#(Container as GridViewRow).RowIndex %>' Width="0" Height="0" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
后台:
步骤3:
添加GridView的RowCommand事件
protected void gv_StockInfo_RowCommand(object sender, GridViewCommandEventArgs e)
{
int id = Convert.ToInt32(e.CommandArgument);
gv_StockInfo.SelectedIndex = id;
//在这里添加你的GridView的数据绑定过程或函数。
}
与2楼的回答不同之处在于,此方法是通过调用GridView的事件,使GridView真正的选取该行,而不是改变该行的现实效果。
展开全部
string id=this.GridView1.DataKeys[e.RowIndex].Value.ToString();取出当前行的id
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选中?
<asp:GridView ID="gv_StockInfo" runat="server" AllowPaging="True">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="商品编码" HeaderText="商品编码" />
<asp:BoundField DataField="商品名称" HeaderText="商品名称" />
<asp:TemplateField HeaderText="实到数量">
<ItemTemplate>
<asp:TextBox ID="txt_quantity" runat="server" AutoPostBack="True" onblur="this.parentElement.parentElement.style.backgroundColor=this.parentElement.parentElement.name;"
onfocus="javascript:alert(this.parentElement.parentElement.childNodes[0].innerHTML);this.parentElement.parentElement.name=this.parentElement.parentElement.style.backgroundColor;this.parentElement.parentElement.style.backgroundColor='red'"CausesValidation="True" Width="50px" Text='<%# Eval("实到数量") %>' OnTextChanged="txt_quantity_TextChanged"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:GridView ID="gv_StockInfo" runat="server" AllowPaging="True">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="商品编码" HeaderText="商品编码" />
<asp:BoundField DataField="商品名称" HeaderText="商品名称" />
<asp:TemplateField HeaderText="实到数量">
<ItemTemplate>
<asp:TextBox ID="txt_quantity" runat="server" AutoPostBack="True" onblur="this.parentElement.parentElement.style.backgroundColor=this.parentElement.parentElement.name;"
onfocus="javascript:alert(this.parentElement.parentElement.childNodes[0].innerHTML);this.parentElement.parentElement.name=this.parentElement.parentElement.style.backgroundColor;this.parentElement.parentElement.style.backgroundColor='red'"CausesValidation="True" Width="50px" Text='<%# Eval("实到数量") %>' OnTextChanged="txt_quantity_TextChanged"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在rowdatabind事件里面添加单击行方法,e.row.Attribute.add("onclick","this.style.backgroundColor=..."),再写个鼠标离开事件,和上面的类似
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询