建议你用javascript来作
把javascript function绑定到textbox的onblur事件上

解决方案 »

  1.   

    TextBox1.Attributes.Add("onblur", "javascript:alert('ok')")如果要写更多的东西
    把alert('ok')用客户端函数代替
      

  2.   

    给你一个小的例子
    如下:
    在aspx html<script language="javascript">
    function mess(var line,var texbox)
    {
        alert('当前id," + line+ "');
        alert(textbox.value);
    }</script>Item_databound里面
    TextBox tb = (TextBox)e.Item.FindControl("tb_Price");

    tb.Attributes.Add("onblur","javascript:checkRowNumber(this," + 
    e.Item.Cells[ 14 ].Text + "," + e.Item.Cells[11].Text
    + ");return false;");
      

  3.   

    ok,一个投注的页面,datalist呢是一场一场的比赛,用户可以对在每场比赛的textbox输入(更改)投注金额,要求无论用户在哪一场比赛的textbox输完了后(或离开这个textbox焦点后)系统就引发事件.
      

  4.   

    因为我这个事件要和busynessrules层通讯的,用你们的方法可以吗?好象js只是一个客户端的处理啊.如果我没看明白,敬请赐教!谢谢!
      

  5.   

    请问楼主 想要刷新页面吗 如果不刷新页面不可以的要刷新可以在textbox的服务器端的事件中写
      

  6.   

    js中调用后台代码是很简单的,可以使用xmlhttp或者使用WebService Behavior
      

  7.   

    建议:
    1、在js中引发事件
    2、使用xmlhttp或者使用WebService Behavior 来调用后台的方法。
    例子:
    var objHttp;
    var strXml;
    strXml="";
    strXml+="<Form2Exist><Action>Tell</Action>";
    strXml+="</Form2Exist>";

    objHttp=new ActiveXObject("Msxml2.XMLHTTP");
    objHttp.open("POST","WebForm3.aspx",false);
    objHttp.send(strXml); 后台代码:
    private void Page_Load(object sender, System.EventArgs e)
    {
    //&acute;&brvbar;&Agrave;í&acute;&laquo;&Egrave;&euml;&micro;&Auml;&Ccedil;&euml;&Ccedil;ó
    try
    {
    StreamReader sReader = new StreamReader(Request.InputStream);
    char[] Buffer = new char[Request.InputStream.Length];
    Buffer.Initialize();
    sReader.Read(Buffer,0,Convert.ToInt32(Request.InputStream.Length));
    string strXML = new string(Buffer);
    sReader.Close(); XmlDocument objXMLDoc = new XmlDocument();
    objXMLDoc.LoadXml(strXML);
    string action = objXMLDoc.SelectSingleNode("//Action").InnerText;
    if (action=="Tell")
    {
    Session["EXIST"] = null;
    } }
    catch
    {

    }
    }
      

  8.   

    你可以在textbox失去焦点调用的js函数里面跳转到另外一个页面,并传递参数过去,在另一个页面里面根据参数就可以执行你所要的操作了
      

  9.   

    jiezhi(風依舊) 和  guying999(求知)的方法可行
      

  10.   

    loveerror(error) 
    怎样知道引发事件的datalist的Item号?
      

  11.   

    guying999(求知)
    这是我按你的思路写的代码
    <asp:TextBox id="TbxCoins"   runat="server" onblur="if(!/^\d+$/.test(value)){alert('请输入数字');focus()}else{location.href('TbxOnblur.aspx');}" Width="50" Text='<%# DataBinder.Eval(Container.DataItem, "Coin") %>'></asp:TextBox>
    我的datalist的DataKeyField="RowID"
    如何把引发跳转页面事件这一行的RowID和TextBox的value作为参数附在'TbxOnblur.aspx后传过去,能帮把这一点code写出来吗?
      

  12.   

    这个更新的功能原来是用linkbutton+OnItemCommand实现,就是要click一下按钮,可惜不合要求.而textbox和OnItemCommand又连不上,郁闷!<asp:Linkbutton CommandName="Modify" runat="server" ID="LbnModify"> 
           更新
        </asp:Linkbutton>
      

  13.   

    给你写个示例: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,"姓名")%>&nbsp;&nbsp;
    分数:<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>
      

  14.   

    webdiyer(陕北吴旗娃)
    你的方法ok,可以了!
    看来我最初的思路是对的,还是利用datalist的OnItemCommand事件,而此事件需要一个按钮事件来调用(button、linkbutton),于是
    box.Attributes.Add("onchange",this.GetPostBackEventReference(btn));
    让textbox的onchange事件引发linkbutton的click回送
    使textbox的onchange和datalist的OnItemCommand联系起来,问题解决!谢谢各位!结贴送分!