asp.net Gridview TextBox 回车的问题怎么解决?

来源:互联网 发布:程序员月薪能上10w吗 编辑:程序博客网 时间:2024/05/06 16:17

首先建立控件GridView1,注意噢
页面EnableEventValidation="false"必须的。

<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Panel ID="Panel1" DefaultButton="Button1" runat="server">
<asp:TextBox ID="TextBox1" Text='<%#Eval("StrValue")%>' runat="server" />
<asp:Button ID="Button1" UseSubmitBehavior="false" runat="server" Text="Button" OnClick="Button1_Click" />
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>

我为了使我的GridView有数据测试,所以新增了test类,楼主完全用数据库来提供数据。
public class test
{
private string strValue;

public string StrValue
{
get
{
return strValue;
}
set
{
if (strValue == value)
return;
strValue = value;
}
}
}

接着是页面code部分了

protected void Page_Load(object sender, EventArgs e)
{

List<test> a = new List<test>();

for (int i = 0; i < 10; i++)
{
test t = new test();
t.StrValue = i.ToString();
a.Add(t);
}

GridView1.DataSource = a;
GridView1.DataBind();


}

protected void Button1_Click(object sender, EventArgs e)
{

Button btn = (Button)sender;
Panel pan = (Panel)btn.Parent;
TextBox tb = (TextBox)pan.FindControl("TextBox1");
Label1.Text = tb.Text;
}

赶快运行下吧,把鼠标点进第一行的文本框,不要犹豫,按回车八,按好了么,快看看下边的Label显示什么吧,没错吧,而且每行都有这样的效果噢!!

好了我总结一下技术要点吧:

1.在Template列中用Panel把TextBox和Button包裹进去,然后在Panel上设置DefaultButton的属性指向Button,这个是关键。
2.后台Button_Click事件的sender参数可以帮助你获取你想要的控件或资料。

thats all

原创粉丝点击