模板EditItemTemplate的文本框可以在编辑行是显示文本框,但是运行时发现只要是文本格式的单元格,文本框显示都会显示很多空格,无论是否有数据。
这个就很麻烦,每次修改时都必须先将空格删除,否则录入就有可能错误。我想使用trim()方法,将这些空格清除。但是却不知道怎么将这些模板列的文本框取出来。
我使用过一下方法foreach (GridViewRow grow in GridView1.Rows)
{
TextBox textbox = (TextBox)grow.Cells[4].FindControl("TextBox2");
textbox.Text = textbox.Text.Trim();
}
foreach (Control control in GridView1.TemplateControl.Controls)
{
if (control is TextBox)
{
TextBox textBox =(TextBox)control;
textBox.Text = textBox.Text.Trim();
}
}结果都不行,实在是想不出其他的办法啦。另外,原来我写过一个遍历页面控件,将文本框空格清除的方法
foreach (Control control in Controls)
{
foreach (Control c in pControls)
{
foreach (Control childc in c.Controls)
{
if (childc is TextBox)
{
TextBox textBox = (TextBox)childc;
textBox.Text = textBox.Text.Trim();
}
}
}
}
但为什么,照理说gridview.controls集合应该也可以遍历取出文本框控件,但为什么不行呢?
这个就很麻烦,每次修改时都必须先将空格删除,否则录入就有可能错误。我想使用trim()方法,将这些空格清除。但是却不知道怎么将这些模板列的文本框取出来。
我使用过一下方法foreach (GridViewRow grow in GridView1.Rows)
{
TextBox textbox = (TextBox)grow.Cells[4].FindControl("TextBox2");
textbox.Text = textbox.Text.Trim();
}
foreach (Control control in GridView1.TemplateControl.Controls)
{
if (control is TextBox)
{
TextBox textBox =(TextBox)control;
textBox.Text = textBox.Text.Trim();
}
}结果都不行,实在是想不出其他的办法啦。另外,原来我写过一个遍历页面控件,将文本框空格清除的方法
foreach (Control control in Controls)
{
foreach (Control c in pControls)
{
foreach (Control childc in c.Controls)
{
if (childc is TextBox)
{
TextBox textBox = (TextBox)childc;
textBox.Text = textBox.Text.Trim();
}
}
}
}
但为什么,照理说gridview.controls集合应该也可以遍历取出文本框控件,但为什么不行呢?
解决方案 »
- 请教各位:我在gridview中增加了一列textbox,为什么我在后台就找不到这个textbox的id号呢?
- 实现每篇新闻的访问量统计····
- 不显示删除回复显示所有回复显示星级回复显示得分回复 在.net中操作sql中的数据,去掉sql中重复的数据 并对各项数据进行统计
- datareader 与 datarow....
- js调用
- google广告的问题
- 谁能提供一个asp.net/C#版本的ubb代码?
- 高分问一个问题:关于exe文件所对应的数据库?
- 在ASP中如何调用文件打开对话框?
- 怎样判断当前节点是否为跟节点(VB.net)
- 模板页中使用了updatepanel 怎么才能在其他页面中实现类似Response.Write("<script language= 'JavaScript '>alert('OK')</script>")的功能
- 如何操作模板列中的文本框
{
if (e.Row.RowType == DataControlRowType.EmptyDataRow)
{
TextBox textbox = e.Row.FindControl("TextBox2") as TextBox;
if(textbox!=null)
textbox.Text = textbox.Text.Trim(); }
}
原来是这样:
<asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("year") %>'></asp:TextBox>
我该为:
<asp:TextBox ID="TextBox4" runat="server" Text='<%# bakstr(Eval("year")) %>'></asp:TextBox>
bakstr方法是一个去除字符串前后空格的方法,year是字段。
代码如下:
public string bakstr(string str)
{
return str.Trim();
}但是系统提示
编译器错误消息: CS1502: 与“kpi_test.bakstr(string)”最匹配的重载方法具有一些无效参数。。
不过我测试过后,并不起作用。
我跟踪执行后发现,根本进不了判断语句
if (e.Row.RowType == DataControlRowType.EmptyDataRow)
public string bakstr(object obj)
{}
比如说读取时可以加在后面加.Replace(" ", "") 这样显示在页面就没空格了。
不是这个问题,因为在模板列的文本框默认就有空格,用户在输入的时候不不注意就会将空格一起保存到数据库。虽然可以用验证控件提示用户有空格,不过这样用户用起来很麻烦。另外,由于业务需要,我必须在模板列文本框中计算。例如模板列文本框txetbox1填入一个数字后,要计算后填入textbox2
textbox2.txt=convnter.toint16(textbox1.text)*3+1;这样无论是否要清除文本框空格,都必须吧当前激活的模板列文本框取出来计算,现在就是不知道怎么将这些模板列文本框取出来。
你的这个方法可行,谢谢。不过又有一个新问题:<%# bakstr(Eval("year")) %>这样以后就是不是双向绑定啦
修改就不能写回数据库。
<%#Bind(bakstr(Eval("year"))) %>这样写也不对。那么有没有办法先text=<%#Bind("year")%> ,然后在把对text赋值呢?要是能在后台代码中直接调用到模板列的文本框就好啦。
直接在后后台一个textBox1.text=textBox1.text.Trim();多好啊。但是后台怎么也取不了模板列中的文本框。
散分。