asp.net Gridview TextBox 回车

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net Gridview TextBox 回车相关的知识,希望对你有一定的参考价值。

我在gridview里加了个模板列,列里有一个textbox和button,我想在用户textbox里写完数据后按回车就激发点击button的事件,请问应该怎样做?

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" CellPadding="4" DataKeyNames="GoodsID" DataSourceID="GvAcc"
ForeColor="#333333" GridLines="None">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<Columns>
........
<asp:TemplateField HeaderText="数量">
<ItemTemplate>
<asp:TextBox ID="tbGv" runat="server" Width="43px" Text='<%# Bind("2008") %>'></asp:TextBox>
<asp:Button ID="btGv" runat="server" Text="确定" CommandArgument='<%# Eval("GoodsID") %>' OnCommand="btGv_Command"/>
</ItemTemplate>
</asp:TemplateField>
.........
</Columns>
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
能再详细点吗?

三位的方法我也试过了,都不行喔~应该说是不适合.
可以的话发一个例子到我邮箱好吗?ltrain4@163.com

4楼的想法我开始就想过了也试过,是不行的.

楼主的问题
完全不需要懂javascript

我把我的代码Copy上来。

首先建立控件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

参考资料:自己

参考技术A 具体方法如下:
1 head中如下java代码:
<HEAD>
<script language="javascript">
function EnterTextBox()

if(event.keyCode == 13 && document.all["TextBox1"].value != "")

event.keyCode = 9;
event.returnValue = false;
document.all["Button1"].click();


</script>
</HEAD>

2 在对应的cs文件中
protected void Page_Load(object sender, EventArgs e)

//绑定TextBox回车事件
TextBox1.Attributes.Add("onkeypress","EnterTextBox()");


其中TextBox1和Button1分别为TextBox和按钮的ID
参考技术B 输入框输入数据后,按回车后激活按钮事件

客户端脚本

function SubmitKeyClick(button)



if (event.keyCode == 13)



event.keyCode=9;

event.returnValue = false;

document.all[button].click();





服务器端代码

tbx_CHM_Name.Focus();//输入框获得焦点

tbx_CHM_Name.Attributes.Add("onkeydown", "SubmitKeyClick('" + btn_Search2.ClientID + "');");
参考技术C <script>
function clickButtonFun(obj)

if(event.keyCode == 13)

document.getElementById(obj.id.replace("tbGv","btGv")).click();


</script>
<asp:TextBox ID="tbGv" onkeypress="clickButtonFun(this)" runat="server" Width="43px" Text='<%# Bind("2008") %>'></asp:TextBox>
试一下.
参考技术D 下面揭晓正确答案:
默认的回车是提交表单,所以那些试图将回车触发事件更改或者添加的都是错误的,不管你添加什么,系统都会自动回发表单。

那么说一下解决方法:
首先,所有的控件自动回发的属性设置为false
在Page_Load中加入,
if(!IsPostBack)

这里写你原来Page_Load的代码

else

这里获取页面传回的参数,就是行号
在这里就可以做你要做的事情了
如果必要的话可以加一些标识符


下面是前台
如果你不想表单提交,就只能摒弃texbox,而用<input type="text" onpresskey="btn_click(行号)">
下面javascript
<script type="javascript">
function btn_click(行号)

这里可以对行号做一些处理
或者设置一个变量
如<asp:HiddenField ID="nid" runat="server" />
nid=行号;
form1.submit();

</script>
后台就可以获得nid传回的行号了
好了,到此应该明白了吧?那么给分吧
第5个回答  2008-11-10 设textbox的autopost=true
然后textbox的change事件里调用相应方法

如何使用 asp.net 将 gridview 图像和数据导出到 PDF 或使用 asp.net 将 gridview 数据导出到 PDF

【中文标题】如何使用 asp.net 将 gridview 图像和数据导出到 PDF 或使用 asp.net 将 gridview 数据导出到 PDF【英文标题】:how to export gridview image and data to PDF using asp.net or Export gridview data to PDF using asp.net 【发布时间】:2012-06-30 22:19:49 【问题描述】:
protected void Button4_Click(object sender, EventArgs e)

    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition","attachment;filename=GridViewExport.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView1.AllowPaging = false;
    GridView1.DataBind();
    GridView1.RenderControl(hw);
    StringReader sr = new StringReader(sw.ToString());
    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
    pdfDoc.Open();
    htmlparser.Parse(sr);//this is the error line
    pdfDoc.Close();
    Response.Write(pdfDoc);
    Response.End();  

【问题讨论】:

【参考方案1】:

您必须为此使用第 3 方控制 尝试免费使用 iText Sharp 库

更多信息go here

【讨论】:

我导出到文本中的 gridview 值..但不只导出到图像我如何导入 pdf 中的图像? Hey Jintha arun.. 你解决了这个问题吗??如果是,请您发布答案..

以上是关于asp.net Gridview TextBox 回车的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net WebForm 中 UpdatePanel 内的模板文本框字段

ASP.NET 中Double.Parse(String)转换问题

如何使用 asp.net 将 gridview 图像和数据导出到 PDF 或使用 asp.net 将 gridview 数据导出到 PDF

asp.net中GridView怎样进行分页,编辑,删除操作

Asp.net中GridView使用详解(引)

asp.net Gridview 的用法