真的是不可能完成的任务??DataGri中有两个模板列,每个模板列中都有一个TextBox,想实现的是:在其中一个TextBox的TextChanged事件里,到数据

description 2004-08-19 12:01:21
期待真正答案的出现!!!!!!!!!!!!!!!!!!

而不是想当然的以为

谢谢大家了,急死了
...全文
237 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fzxmlxml 2004-10-31
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
mark
description 2004-08-19
  • 打赏
  • 举报
回复
谢谢楼上各位兄弟
还是没有答案,

这里这么多高手,这个真的实现不了????!
description 2004-08-19
  • 打赏
  • 举报
回复
heroman1979(网络虫子)

完全正确,有法子吗?

yukingwq(古鲁)谢谢,我研究一下
最好不用控件
yukingwq 2004-08-19
  • 打赏
  • 举报
回复
可以使用自定义控件来实现 ,依然需要postback
private void textchange2(Object sender,System.EventArgs e)
{

message.Append("The text in" + sender.ToString()+ " was changed.");
message.Append("You entered " + Server.HtmlEncode(Box2.Text) +".");
}
<Custom:MyTextBox id = "Box2" Text="test2" OnTextChanged="textchange2" runat = server/> <br>

mytextbox的源码:
using System;
using System.Web;
using System.Web.UI;
using System.Collections.Specialized;

namespace CustomControls
{
public class MyTextBox2: Control, IPostBackDataHandler
{
public String Text
{
get
{
return (String) ViewState["Text"];
}
set
{
ViewState["Text"] = value;
}
}

public event EventHandler TextChanged;

public virtual bool LoadPostData(string postDataKey,
NameValueCollection values)
{
String presentValue = Text;
String postedValue = values[postDataKey];
if (!presentValue.Equals(postedValue))
{
Text = postedValue;
return true;
}
return false;
}

public virtual void RaisePostDataChangedEvent()
{
OnTextChanged(EventArgs.Empty);
}

protected virtual void OnTextChanged(EventArgs e)
{
if (TextChanged != null)
TextChanged(this,e);
}

protected override void Render(HtmlTextWriter output)
{
output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
output.AddAttribute(HtmlTextWriterAttribute.Value, this.Text);
output.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID);
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();
}
}
}
雪狐 2004-08-19
  • 打赏
  • 举报
回复
不会吧,能不能用findcontrol试试??
heroman1979 2004-08-19
  • 打赏
  • 举报
回复
不是实现不了,你的意思是指,要根据前一个TEXTBOX的值来执行查询,然后将查询结果取出并放入到后一个TEXTBOX是不是?
description 2004-08-19
  • 打赏
  • 举报
回复
或者是真的在web上,在datagrid中,这个实现不了?
description 2004-08-19
  • 打赏
  • 举报
回复
选班主时我还投了你一票呢

:)
description 2004-08-19
  • 打赏
  • 举报
回复
goody9807()
是吴棋娃吧,果然是高手啊,开了这么多贴终于有人明白我在问什么了,

而且写出了基本正确答案!!(可惜不是vb版本的)
佩服加感谢!!!!!!!!
goody9807 2004-08-19
  • 打赏
  • 举报
回复
给你写个示例:

test.aspx
---------------------------------------------------
<%@Page Language="C#"%>
<%@Import Namespace="System.Data"%>

<script runat="server">
void Page_Load(object src,EventArgs e){
if(!Page.IsPostBack){
BindData();
}
}

void BindData(){
DataTable table=(DataTable)Cache["mytable"];
if(table==null){
table=new DataTable();
DataColumn column=new DataColumn("序号",typeof(int));
column.AutoIncrement=true;
column.AutoIncrementSeed=1;
column.Unique=true;
table.Columns.Add(column);
table.Columns.Add(new DataColumn("姓名",typeof(string)));
table.Columns.Add(new DataColumn("住址",typeof(string)));
table.Columns.Add(new DataColumn("分数",typeof(int)));
DataRow row=table.NewRow();
row["姓名"]="张三";
row["住址"]="陕西省吴旗县";
row["分数"]=22;
table.Rows.Add(row);
row=table.NewRow();
row["姓名"]="李四";
row["住址"]="陕西省延安市";
row["分数"]=26;
table.Rows.Add(row);
table.PrimaryKey=new DataColumn[]{column};
Cache["mytable"]=table;
}
dlist.DataSource=table;
dlist.DataBind();
}

void BindDataItem(object src,DataListItemEventArgs e){
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
TextBox box=e.Item.FindControl("txtbox") as TextBox;
LinkButton btn=e.Item.FindControl("btn") as LinkButton;
if(box!=null&&btn!=null){
box.Attributes.Add("onchange",this.GetPostBackEventReference(btn));
}
}
}

void UpdateTable(object src,DataListCommandEventArgs e){
DataTable table=(DataTable)Cache["mytable"];
TextBox box=e.Item.FindControl("txtbox") as TextBox;
if(box!=null){
table.Rows[e.Item.ItemIndex]["分数"]=int.Parse(box.Text);
Cache["mytable"]=table;
BindData();
}
}
</script>
<HTML>
<HEAD>
<TITLE> Webdiyer制造:) </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Webdiyer">
</HEAD>

<BODY>
<form runat="server">
<asp:DataList runat="server" id="dlist" OnItemDataBound="BindDataItem" onUpdateCommand="UpdateTable">
<ItemTemplate>
姓名:<%#DataBinder.Eval(Container.DataItem,"姓名")%>  
分数:<asp:TextBox runat="server" id="txtbox" Text='<%#DataBinder.Eval(Container.DataItem,"分数")%>'/><br/>
<asp:LinkButton Text="Update" CommandName="Update" runat="server" id="btn" visible=false/>
</ItemTemplate>
</asp:DataList>
</form>
</BODY>
</HTML>

goody9807 2004-08-19
  • 打赏
  • 举报
回复
TextBox的TextChanged 是在修改完textbox中内容 然后按回车时触发

我试试去

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧