当前位置:编程学习 > C#/ASP.NET >>

请教高手一个.NET开发的问题

就是在前台窗体界面上有3个TEXTBOX其中TEXTBOX1和TEXTBOX2无论哪个发生变化就会引起TEXTBOX3的值的改变,也就是说TEXTBOX3的值是自动获得的,是当TEXTBOX1和TEXTBOX2都有值时,从后台数据库获得TEXTBOX3的值。请问高手们怎么实现? --------------------编程问答--------------------    沙发舒服.用自动传回... --------------------编程问答-------------------- 查库?
ajax-UpdatePanel
textchange写代码 --------------------编程问答-------------------- 怎么传?具体点可以吗?坐沙发的人。 --------------------编程问答-------------------- 怎么说得这么的拗口 --------------------编程问答-------------------- 是说在页面上输入文本框1和2的值后改变文本框3的值吗? --------------------编程问答-------------------- <asp:textbox id="TextBox1" ontextchanged="TextBox_TextChanged" ...
<asp:textbox id="TextBox2" ontextchanged="TextBox_TextChanged" ...

protected void TextBox1_TextChanged(object sender, 
{
TextBox txt = sender as Textbox;
if(txt.ID == "TextBox1") {
 // 访问数据库
 // txt.Text
 // TextBox3.Text = <<newValueFormDb>>
}
else if(txt.ID == "TextBox2") {
// ...
}
}

--------------------编程问答-------------------- 将textbox1和2的autopostback设置为true,然后在各自的textchange事件中写对应的处理方式,这样可以达到你的效果,不过页面会刷新 --------------------编程问答-------------------- 说的不清楚!如果是做加减运算这样简单的事的话用不着数据库了直接就可以js做了,如果做报表一样复杂的事,那你就得用ajax吧(b/s)! --------------------编程问答-------------------- this.textBox1.TextChanged += new System.EventHandler(this.textBox2_TextChanged);
this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged);

private void textBox2_TextChanged(object sender, EventArgs e)
        {
            this.textBox3.Text = this.textBox1.Text.Trim() + this.textBox2.Text.Trim();
        } --------------------编程问答-------------------- 嗯,是的,还是楼上的理解力强。 --------------------编程问答-------------------- 如果想不刷新的话,简单一点可以放置一个ajax:UpdatePanel 在页面上 --------------------编程问答--------------------


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
                <asp:TextBox ID="TextBox2" runat="server" OnTextChanged="TextBox2_TextChanged"></asp:TextBox>
                <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    </form>
</body>
</html>



using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        this.TextBox3.Text = "从数据库取值";
    }
    protected void TextBox2_TextChanged(object sender, EventArgs e)
    {
        this.TextBox3.Text = "从数据库取值";
    }
}
--------------------编程问答-------------------- 不能刷新页面,比如:文本框一是证件类型,文本框二是证件号,那么文本框三就是要根据证件类型和证件号获得这个人的姓名。必须从数据库表里获得。 --------------------编程问答-------------------- TextBox3还是Lanbel3?一个接收用户录入的文本框总是自动根据后台刷新(用户体验糟透了),这个问题提得让人觉得回答起来极其不舒服。 --------------------编程问答-------------------- winForm还是webForm?

webForm最好异步取一下数据,否则效果不太爽.. --------------------编程问答-------------------- AutoPostBack="True" --------------------编程问答-------------------- 判断一下TEXTBOX1和TEXTBOX2是否都有值时
--------------------编程问答-------------------- Night_Elf(风暴虫):
如果想不刷新的话,简单一点可以放置一个ajax:UpdatePanel 在页面上

请问风暴虫,怎么实现?给点代码可以吗?呵呵 --------------------编程问答-------------------- 只能说在不过分追求效率的情况下,可以使用updatepanel来达到相应的目的

本来微软给你客户端强行加载那么多script这速度本身就是个问题 --------------------编程问答-------------------- maek 
up --------------------编程问答--------------------
引用 6 楼 Jinglecat 的回复:
<asp:textbox id="TextBox1" ontextchanged="TextBox_TextChanged" ... 
<asp:textbox id="TextBox2" ontextchanged="TextBox_TextChanged" ... 

protected void TextBox1_TextChanged(object sender,  

TextBox txt = sender as Textbox; 
if(txt.ID == "TextBox1") { 
 // 访问数据库 
 // txt.Text 
 // TextBox3.Text =  < <newValueFormDb>> 

else if(txt.ID == "TextBox2") { 
// ... 


6楼的这个不就行了。何必弄得那么复杂呢 --------------------编程问答--------------------
引用 18 楼 xuhaiyan000 的回复:
Night_Elf(风暴虫): 
如果想不刷新的话,简单一点可以放置一个ajax:UpdatePanel 在页面上 

请问风暴虫,怎么实现?给点代码可以吗?呵呵

代码就是“堕落的青春”给的那段  --------------------编程问答-------------------- 晕。。用JS多好。。还用回传。。晕倒。 --------------------编程问答-------------------- 呵呵,谢谢各位高手。我试一下哈。。。 --------------------编程问答-------------------- 嘎嘎 --------------------编程问答-------------------- --------------------编程问答-------------------- WEB的话用 updatepanel,示例代码12楼写好了,不过要运行在 VS2005以上(含) --------------------编程问答-------------------- web form就使用javascript,

win from就使用事件好了. --------------------编程问答-------------------- 画面Load时,Textbox3是从数据库里取值,那两个控件改变时Textbox3改变可以用JS做。 --------------------编程问答-------------------- 是web form,使用javascript怎么写? --------------------编程问答-------------------- 要把从数据库里取的值显示在Textbox3给用户看 --------------------编程问答-------------------- HELP ME!高手们! --------------------编程问答-------------------- 用js写一个函数,让Txt1和Txt2的OnTextChanged时,再判断Txt1或Txt2的值,根据需求再来给Txt3赋值 --------------------编程问答--------------------
引用 14 楼 sp1234 的回复:
TextBox3还是Lanbel3?一个接收用户录入的文本框总是自动根据后台刷新(用户体验糟透了),这个问题提得让人觉得回答起来极其不舒服。
--------------------编程问答-------------------- up --------------------编程问答-------------------- 什么语言也不说清楚 --------------------编程问答-------------------- 具体我的思路是:
TEXTBOX1和TEXTBOX2分别对this.textBox2.TextChanged 添加各自的方法,
方法作用是判断如果TEXTBOX1和TEXTBOX2有且仅有一个不空,那么TEXTBOX3的内容重新赋值(值是来自不空的那个)。
如果TEXTBOX1和TEXTBOX2均不空则从数据库获得,
下面是我用vs.net2005 做的win应用程序代码片段web的雷同,仅供参考。
this.textBox2.TextChanged += new System.EventHandler(TextChanged);
this.textBox1.TextChanged += new System.EventHandler(TextChanged);
private void TextChanged(object sender, EventArgs e)//两个事件均加入这个方法
        {
            if (this.textBox2.Text != "" && this.textBox1.Text != "")
            {
                this.textBox3.Text = "从数据库得到数据";//连接数据库得到数据填入3中
            }
            else if (this.textBox2.Text == "" && this.textBox1.Text == "")
            {
                //do nothing
            }
            else
            {
                if (this.textBox2.Text != "")//如果1和2原来都有数据,那么这时你改变2让2变空因此
                                                    //这时3的数据应该是1的不是2的
                {
                    this.textBox3.Text = textBox2.Text;
                }
                else 
                {
                    this.textBox3.Text = textBox1.Text;
                }
            }
        } --------------------编程问答-------------------- 多谢各位热心的高手们,我是刚刚往深处学习这个玩意,所以会慢一些,高手们理解一下哈。。。 --------------------编程问答-------------------- JF --------------------编程问答-------------------- 赋值用js 读取数据用ajax --------------------编程问答-------------------- 用JS判断,那个啥的,在JS中判断两个字符串是咋搞的呀? --------------------编程问答-------------------- void Cehck()
{
    if(textbox1.Text == "")//textbox1值为空
    {
        if(textbox2.Text == "")//textbox2值为空
        {
          //下面自已写吧。
        }
    }
} --------------------编程问答-------------------- 反推
void Check()
{
    if(textbox1.Text!="")//textbox1值不为空
    {
        if(textbox2.Text != "")//textbox2值不为空
        {
          //哇哈哈哈,终于写出来了!!!!
        }
    }
} --------------------编程问答-------------------- 哦耶,楼主要的是AJAX。 --------------------编程问答-------------------- C#代码? --------------------编程问答-------------------- 顶。等牛人来回答。 --------------------编程问答-------------------- 我就是牛人,但是我不回答。 --------------------编程问答-------------------- 可以用JS+XMLHTTP异步刷新 --------------------编程问答-------------------- 就是在前台窗体界面上有3个TEXTBOX其中TEXTBOX1和TEXTBOX2无论哪个发生变化就会引起TEXTBOX3的值的改变,也就是说TEXTBOX3的值是自动获得的,
==
这个容易实现

是当TEXTBOX1和TEXTBOX2都有值时,从后台数据库获得TEXTBOX3的值。请问高手们怎么实现?
==
这个什么意思? --------------------编程问答-------------------- 我的开发环境是VS2005,语言是C#,现在我对AJAX和JS都不熟悉。

下面回答amandag提出的问题:
是当TEXTBOX1和TEXTBOX2都有值时,从后台数据库获得TEXTBOX3的值。请问高手们怎么实现? 
== 
这个什么意思?

就是TextBox3的内容随着TextBox1和TextBox2内容的变化而改变。

因为TextBox3的值是把TextBox1和TextBox2的值作为查找条件从数据库中获得的,不知道我这次说清楚没有?呵呵。 --------------------编程问答-------------------- <asp:textbox id="TextBox1" ontextchanged="TextBox_TextChanged" ... 
<asp:textbox id="TextBox2" ontextchanged="TextBox_TextChanged" ... 

protected void TextBox_TextChanged(object sender,  

 if (TextBox1.text!="" && TextBox2.text!="")
  {
    TextBox3.text=GetTextBox3Value();
   }

--------------------编程问答-------------------- 貌似会刷新页面的吧 --------------------编程问答-------------------- 反正就是要连接数据库的,就用C#做吧,用我37楼给的方法绝对可以!! --------------------编程问答-------------------- 问题解决了吧!好多人回复啦! --------------------编程问答-------------------- 哎!看来我还是没有把问题描述详细,要不怎么会有这么多人没有理解我的意思呢?

问一下 ***   思乡   ***
<asp:textbox id="TextBox1" ontextchanged="TextBox_TextChanged" ... 
<asp:textbox id="TextBox2" ontextchanged="TextBox_TextChanged" ... 

protected void TextBox_TextChanged(object sender,  

if (TextBox1.text!="" && TextBox2.text!="") 
  { 
    TextBox3.text=GetTextBox3Value(); 
  } 

由这段代码得到TextBox3.text的值后,怎么把这个值显示到窗体界面让用户看到呢?
--------------------编程问答-------------------- 只要给Textbox3.TEXT
赋值 界面就可疑看到 --------------------编程问答-------------------- 我明白楼主的意思了,由这段代码得到TextBox3.text的值后,怎么把这个值显示到窗体界面让用户看到呢? 
这个你是担心它不会自己刷新界面,web确实存在这个问题,
解决的办法,我有两个:
1是:
注意空间一般在事件触发时都有返回提交到服务器处理的一项属性,好象是auto什么什么的你把它设置为true(注意TextBox1和 TextBox2的都要设置true)然后如果textbox1或 TextBox2变化了整个页面会刷新,然后text3就跟着变了,用户也就跟着看到变化.

方法2是:
你在这个方法最后加一句强制页面重新加载.
this.textBox2.TextChanged += new System.EventHandler(TextChanged); 
this.textBox1.TextChanged += new System.EventHandler(TextChanged); 
private void TextChanged(object sender, EventArgs e)//两个事件均加入这个方法 
        { 
            if (this.textBox2.Text != "" && this.textBox1.Text != "") 
            { 
                this.textBox3.Text = "从数据库得到数据";//连接数据库得到数据填入3中 
            } 
            else if (this.textBox2.Text == "" && this.textBox1.Text == "") 
            { 
                //do nothing 
            } 
            else 
            { 
                if (this.textBox2.Text != "")//如果1和2原来都有数据,那么这时你改变2让2变空因此 
                                                    //这时3的数据应该是1的不是2的 
                { 
                    this.textBox3.Text = textBox2.Text; 
                } 
                else 
                { 
                    this.textBox3.Text = textBox1.Text; 
                } 
            } 
         Page_Load(this,  EventArgs new ()) //  这句是再次刷新页面,当然我可能写的不对,但是思想是对的,     
 }
如果是win程序那么就存在页面刷新的问题了 --------------------编程问答-------------------- 对不起字打错了
"1是: 
注意空间一般"
改为
1是: 
注意控件一般 --------------------编程问答-------------------- 看到了是textbox的AutoPostBack属性设置为true
你把textbox1和textbox2的AutoPostBack属性都设置为true --------------------编程问答-------------------- 没发现有什么难的方法很多的
--------------------编程问答-------------------- 我都看了一下,没一个答案是正确的,有的说对了,但太概括了,这个一定要用Ajax,用javascript的事件,用c#的一般处理程序文件(括展名为ashx)来传数据,具体代码我现在没时间写,联系我QQ 93022019 --------------------编程问答-------------------- 我觉得可以利用javascript调用webserver的方法~~~很简单~~~~ --------------------编程问答-------------------- webserver代码:
using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Web.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Web.Script.Services;

/// <summary>
///WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {

    public WebService () {

        //如果使用设计的组件,请取消注释以下行 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string Getid(string fname,string lname)
    {
        using (SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["Personal"].ConnectionString))
        {
            SqlCommand comm = conn.CreateCommand();
            comm.CommandText = "select [au_id] from [authors] where [au_fname]=@fname and [au_lname]=@lname";
            comm.Parameters.Add("@fname",SqlDbType.NVarChar,50).Value= fname;
            comm.Parameters.Add("@lname", SqlDbType.VarChar,50).Value = lname;
            conn.Open();
            using (SqlDataReader dr = comm.ExecuteReader(CommandBehavior.SingleResult))
            {
                while (dr.Read())
                {
                    return dr["au_id"].ToString();
                }
            }
        }
        return null;
    }
}


javascript代码:
/// <reference name="MicrosoftAjax.js"/>
function txonblur()
{
//    var fname=$get("<%=TextBox1.ClientID%>").value;
//    var lname=$get("<%=TextBox2.ClientID%>").value;
var fname=$get("TextBox1").value;
var lname=$get("TextBox2").value;
   if(fname=="" || lname=="")
   {
     return;
   }
   WebService.Getid(fname,lname,onsuccess,OnFailed)
}
function onsuccess(result)
{
  if(result==null)
  {
    $get("TextBox3").value="没有结果!";
  }
  else
  {
    $get("TextBox3").value=result;
  }

}
function OnFailed(error)
{
    var stackTrace=error.get_stackTrace();
    var message=error.get_message();
    var statusCode=error.get_statusCode();
    var exceptionType=error.get_exceptionType();
    var timedout=error.get_timedOut();
       var ReltElem=$get("Results");
   ReltElem.innerHTML= 
   "堆栈追踪:" + stackTrace + "<br/>" +
   "服务错误:" + message + "<br/>" +
   "状态码:" + statusCode + "<br/>" +
   "异常类型:" + exceptionType + "<br/>" +
   "超时:" + timedout;
}

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

前台页面代码:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:ScriptManager ID="ScriptManager1" runat="server">
            <Scripts>
                <asp:ScriptReference Path="javascript.js" />
            </Scripts>
            <Services>
                <asp:ServiceReference Path="WebService.asmx" />
            </Services>
        </asp:ScriptManager>
        <span>First Name:</span><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        <span>Last Name:</span><asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <br />
        <span>ID:</span>            
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
        <br />
<%--        <input id="TextBox1" type="text" />
        <input id="TextBox2" type="text" onblur="txonblur()" />
        <input id="TextBox3" type="text" />--%>
    </div>
    </form>
</body>
</html>
--------------------编程问答-------------------- 这样的总是也要指名高手。汗。我的两个三角裤都N个方法。 --------------------编程问答-------------------- 学习,学习哈 --------------------编程问答--------------------
引用 9 楼 funlove999 的回复:
this.textBox1.TextChanged += new System.EventHandler(this.textBox2_TextChanged); 
this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged); 

private void textBox2_TextChanged(object sender, EventArgs e) 
        { 
            this.textBox3.Text = this.textBox1.Text.Trim() + this.textBox2.Text.Trim(); 
        }


这两个textbox 的事件把 --------------------编程问答-------------------- 这个问题超简单.在TEXTBOX中写上onchange事件.用javascript处理计算问题就行了! --------------------编程问答-------------------- ashx、webservice都出来了要那么复杂吗?
就12楼的代码稍微改一下就可以了。 --------------------编程问答-------------------- 呵呵,高手们都辛苦了哈,特别是62楼的dushouke,代码给出的这么具体,实在是非常感谢,但是我得好好研究一下才能看得懂。68楼的AlphaGroup说就12楼的代码稍微改一下就可以了,能告诉我怎么改吗?

--------------------编程问答--------------------  
   学习了! --------------------编程问答--------------------

自己写的。页面刷新一次。
protected void Page_Load(object sender, EventArgs e)
    {
        
      
    }
    protected void txtName_TextChanged(object sender, EventArgs e)
    {
       
 
     
    }
    protected void txtNum_TextChanged(object sender, EventArgs e)
    {
        if (txtName.Text.Trim() == "" && txtNum.Text.Trim() == "")
        {
            txtClass.Text = "信息不全,无法识别班级!";
        }
        else
        {
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "Data Source=3506-0e2defef70;Initial Catalog=students;Integrated Security=True;Pooling=False";
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "select class from stu_tb where name='" + txtName.Text.Trim() + "'";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = conn;
            SqlDataReader rd = cmd.ExecuteReader ();
            rd.Read();
            if (rd.HasRows)
            {
                txtClass.Text = rd["class"].ToString().Trim();

            }
               
            else
            {
                txtClass.Text = "你的信息不存在!";
            }
            rd.Close();

        }



    }
    protected void txtClass_TextChanged(object sender, EventArgs e)
    {
       
    } --------------------编程问答-------------------- 哎,哥们如何提问也很重要,问得很难受,不不想回答
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,